Integrating authendication
moved IPInfo to global configured secret key path authendicated register app node
This commit is contained in:
parent
28618f38d0
commit
354741a0a2
288
Cargo.lock
generated
288
Cargo.lock
generated
@ -26,6 +26,21 @@ dependencies = [
|
|||||||
"memchr",
|
"memchr",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "android-tzdata"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "android_system_properties"
|
||||||
|
version = "0.1.5"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "anstream"
|
name = "anstream"
|
||||||
version = "0.6.18"
|
version = "0.6.18"
|
||||||
@ -195,12 +210,36 @@ version = "0.22.1"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "base64ct"
|
||||||
|
version = "1.6.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bitflags"
|
name = "bitflags"
|
||||||
version = "2.8.0"
|
version = "2.8.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
|
checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "block-buffer"
|
||||||
|
version = "0.10.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71"
|
||||||
|
dependencies = [
|
||||||
|
"generic-array",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "bs58"
|
||||||
|
version = "0.5.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bf88ba1141d185c399bee5288d850d63b8369520c1eafc32a0430b5b6c287bf4"
|
||||||
|
dependencies = [
|
||||||
|
"tinyvec",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.16.0"
|
version = "3.16.0"
|
||||||
@ -234,12 +273,32 @@ version = "1.0.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "chrono"
|
||||||
|
version = "0.4.39"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825"
|
||||||
|
dependencies = [
|
||||||
|
"android-tzdata",
|
||||||
|
"iana-time-zone",
|
||||||
|
"js-sys",
|
||||||
|
"num-traits",
|
||||||
|
"wasm-bindgen",
|
||||||
|
"windows-targets",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "colorchoice"
|
name = "colorchoice"
|
||||||
version = "1.0.3"
|
version = "1.0.3"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
|
checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "const-oid"
|
||||||
|
version = "0.9.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "core-foundation"
|
name = "core-foundation"
|
||||||
version = "0.9.4"
|
version = "0.9.4"
|
||||||
@ -256,6 +315,15 @@ version = "0.8.7"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "cpufeatures"
|
||||||
|
version = "0.2.17"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280"
|
||||||
|
dependencies = [
|
||||||
|
"libc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "crc32fast"
|
name = "crc32fast"
|
||||||
version = "1.4.2"
|
version = "1.4.2"
|
||||||
@ -265,12 +333,62 @@ dependencies = [
|
|||||||
"cfg-if",
|
"cfg-if",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "crypto-common"
|
||||||
|
version = "0.1.6"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3"
|
||||||
|
dependencies = [
|
||||||
|
"generic-array",
|
||||||
|
"typenum",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "curve25519-dalek"
|
||||||
|
version = "4.1.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"cpufeatures",
|
||||||
|
"curve25519-dalek-derive",
|
||||||
|
"digest",
|
||||||
|
"fiat-crypto",
|
||||||
|
"rustc_version",
|
||||||
|
"subtle",
|
||||||
|
"zeroize",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "curve25519-dalek-derive"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
|
||||||
|
dependencies = [
|
||||||
|
"proc-macro2",
|
||||||
|
"quote",
|
||||||
|
"syn",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "der"
|
||||||
|
version = "0.7.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0"
|
||||||
|
dependencies = [
|
||||||
|
"const-oid",
|
||||||
|
"zeroize",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "detee-sgx-daemon"
|
name = "detee-sgx-daemon"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
"bs58",
|
||||||
|
"chrono",
|
||||||
"detee-shared",
|
"detee-shared",
|
||||||
|
"ed25519-dalek",
|
||||||
"env_logger",
|
"env_logger",
|
||||||
"flate2",
|
"flate2",
|
||||||
"home",
|
"home",
|
||||||
@ -292,7 +410,7 @@ dependencies = [
|
|||||||
[[package]]
|
[[package]]
|
||||||
name = "detee-shared"
|
name = "detee-shared"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+ssh://git@gitea.detee.cloud/noormohammedb/detee-shared?branch=stable_01#fce57884937a4ec02acbf2f5b370ab879b1af657"
|
source = "git+ssh://git@gitea.detee.cloud/noormohammedb/detee-shared?branch=stable_01#65bfa113a44251dd13e5d895014f4a773e367d2e"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"base64",
|
"base64",
|
||||||
"prost",
|
"prost",
|
||||||
@ -302,6 +420,16 @@ dependencies = [
|
|||||||
"tonic-build",
|
"tonic-build",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "digest"
|
||||||
|
version = "0.10.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292"
|
||||||
|
dependencies = [
|
||||||
|
"block-buffer",
|
||||||
|
"crypto-common",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "displaydoc"
|
name = "displaydoc"
|
||||||
version = "0.2.5"
|
version = "0.2.5"
|
||||||
@ -313,6 +441,31 @@ dependencies = [
|
|||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ed25519"
|
||||||
|
version = "2.2.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "115531babc129696a58c64a4fef0a8bf9e9698629fb97e9e40767d235cfbcd53"
|
||||||
|
dependencies = [
|
||||||
|
"pkcs8",
|
||||||
|
"signature",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "ed25519-dalek"
|
||||||
|
version = "2.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871"
|
||||||
|
dependencies = [
|
||||||
|
"curve25519-dalek",
|
||||||
|
"ed25519",
|
||||||
|
"rand_core",
|
||||||
|
"serde",
|
||||||
|
"sha2",
|
||||||
|
"subtle",
|
||||||
|
"zeroize",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "either"
|
name = "either"
|
||||||
version = "1.13.0"
|
version = "1.13.0"
|
||||||
@ -373,6 +526,12 @@ version = "2.3.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
|
checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "fiat-crypto"
|
||||||
|
version = "0.2.9"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "filetime"
|
name = "filetime"
|
||||||
version = "0.2.25"
|
version = "0.2.25"
|
||||||
@ -481,6 +640,16 @@ dependencies = [
|
|||||||
"slab",
|
"slab",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "generic-array"
|
||||||
|
version = "0.14.7"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a"
|
||||||
|
dependencies = [
|
||||||
|
"typenum",
|
||||||
|
"version_check",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "getrandom"
|
name = "getrandom"
|
||||||
version = "0.2.15"
|
version = "0.2.15"
|
||||||
@ -682,6 +851,29 @@ dependencies = [
|
|||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "iana-time-zone"
|
||||||
|
version = "0.1.61"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220"
|
||||||
|
dependencies = [
|
||||||
|
"android_system_properties",
|
||||||
|
"core-foundation-sys",
|
||||||
|
"iana-time-zone-haiku",
|
||||||
|
"js-sys",
|
||||||
|
"wasm-bindgen",
|
||||||
|
"windows-core",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "iana-time-zone-haiku"
|
||||||
|
version = "0.1.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f"
|
||||||
|
dependencies = [
|
||||||
|
"cc",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "icu_collections"
|
name = "icu_collections"
|
||||||
version = "1.5.0"
|
version = "1.5.0"
|
||||||
@ -984,6 +1176,15 @@ dependencies = [
|
|||||||
"tempfile",
|
"tempfile",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "num-traits"
|
||||||
|
version = "0.2.19"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
|
||||||
|
dependencies = [
|
||||||
|
"autocfg",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "object"
|
name = "object"
|
||||||
version = "0.36.7"
|
version = "0.36.7"
|
||||||
@ -1091,6 +1292,16 @@ version = "0.1.0"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pkcs8"
|
||||||
|
version = "0.10.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7"
|
||||||
|
dependencies = [
|
||||||
|
"der",
|
||||||
|
"spki",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pkg-config"
|
name = "pkg-config"
|
||||||
version = "0.3.31"
|
version = "0.3.31"
|
||||||
@ -1320,6 +1531,15 @@ version = "0.1.24"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
|
checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "rustc_version"
|
||||||
|
version = "0.4.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92"
|
||||||
|
dependencies = [
|
||||||
|
"semver",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "rustix"
|
name = "rustix"
|
||||||
version = "0.38.44"
|
version = "0.38.44"
|
||||||
@ -1416,6 +1636,12 @@ dependencies = [
|
|||||||
"libc",
|
"libc",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "semver"
|
||||||
|
version = "1.0.25"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "serde"
|
name = "serde"
|
||||||
version = "1.0.217"
|
version = "1.0.217"
|
||||||
@ -1475,12 +1701,32 @@ dependencies = [
|
|||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "sha2"
|
||||||
|
version = "0.10.8"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"cpufeatures",
|
||||||
|
"digest",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "shlex"
|
name = "shlex"
|
||||||
version = "1.3.0"
|
version = "1.3.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "signature"
|
||||||
|
version = "2.2.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de"
|
||||||
|
dependencies = [
|
||||||
|
"rand_core",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "slab"
|
name = "slab"
|
||||||
version = "0.4.9"
|
version = "0.4.9"
|
||||||
@ -1512,6 +1758,16 @@ version = "0.9.8"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
|
checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "spki"
|
||||||
|
version = "0.7.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "d91ed6c858b01f942cd56b37a94b3e0a1798290327d1236e4d9cf4eaca44d29d"
|
||||||
|
dependencies = [
|
||||||
|
"base64ct",
|
||||||
|
"der",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "stable_deref_trait"
|
name = "stable_deref_trait"
|
||||||
version = "1.2.0"
|
version = "1.2.0"
|
||||||
@ -1611,6 +1867,21 @@ dependencies = [
|
|||||||
"zerovec",
|
"zerovec",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tinyvec"
|
||||||
|
version = "1.8.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "022db8904dfa342efe721985167e9fcd16c29b226db4397ed752a761cfce81e8"
|
||||||
|
dependencies = [
|
||||||
|
"tinyvec_macros",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "tinyvec_macros"
|
||||||
|
version = "0.1.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "tokio"
|
name = "tokio"
|
||||||
version = "1.43.0"
|
version = "1.43.0"
|
||||||
@ -1810,6 +2081,12 @@ version = "0.2.5"
|
|||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "typenum"
|
||||||
|
version = "1.17.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-ident"
|
name = "unicode-ident"
|
||||||
version = "1.0.15"
|
version = "1.0.15"
|
||||||
@ -1959,6 +2236,15 @@ dependencies = [
|
|||||||
"wasm-bindgen",
|
"wasm-bindgen",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "windows-core"
|
||||||
|
version = "0.52.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9"
|
||||||
|
dependencies = [
|
||||||
|
"windows-targets",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "windows-registry"
|
name = "windows-registry"
|
||||||
version = "0.2.0"
|
version = "0.2.0"
|
||||||
|
@ -15,14 +15,17 @@ tar = "0.4.43"
|
|||||||
anyhow = "1.0.95"
|
anyhow = "1.0.95"
|
||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
tokio-stream = "0.1.17"
|
tokio-stream = "0.1.17"
|
||||||
|
|
||||||
detee-shared = { git = "ssh://git@gitea.detee.cloud/noormohammedb/detee-shared", branch = "stable_01" }
|
|
||||||
# detee-shared = { path = "../detee-shared" }
|
|
||||||
log = "0.4.25"
|
log = "0.4.25"
|
||||||
serde = "1.0.217"
|
serde = "1.0.217"
|
||||||
serde_json = "1.0.138"
|
serde_json = "1.0.138"
|
||||||
serde_yml = "0.0.12"
|
serde_yml = "0.0.12"
|
||||||
home = "0.5.11"
|
home = "0.5.11"
|
||||||
|
ed25519-dalek = { version = "2.1.1", features = ["rand_core"] }
|
||||||
|
bs58 = "0.5.1"
|
||||||
|
chrono = "0.4.39"
|
||||||
|
|
||||||
|
detee-shared = { git = "ssh://git@gitea.detee.cloud/noormohammedb/detee-shared", branch = "stable_01" }
|
||||||
|
# detee-shared = { path = "../detee-shared" }
|
||||||
|
|
||||||
[build-dependencies]
|
[build-dependencies]
|
||||||
tonic-build = "0.12.3"
|
tonic-build = "0.12.3"
|
||||||
|
@ -15,7 +15,7 @@ use crate::HostConfig;
|
|||||||
|
|
||||||
use crate::global::APP_CONFIG_DIR;
|
use crate::global::APP_CONFIG_DIR;
|
||||||
use crate::global::APP_NAME_PREFIX;
|
use crate::global::APP_NAME_PREFIX;
|
||||||
use crate::global::USED_RESOURCES;
|
use crate::global::USED_RESOURCES_PATH;
|
||||||
|
|
||||||
#[derive(Debug, Default, Deserialize, Serialize)]
|
#[derive(Debug, Default, Deserialize, Serialize)]
|
||||||
pub struct HostResources {
|
pub struct HostResources {
|
||||||
@ -34,13 +34,13 @@ impl HostResources {
|
|||||||
|
|
||||||
// TODO: implement load and save
|
// TODO: implement load and save
|
||||||
fn save_to_disk(&self) -> Result<()> {
|
fn save_to_disk(&self) -> Result<()> {
|
||||||
let mut file = File::create(&*USED_RESOURCES)?;
|
let mut file = File::create(&*USED_RESOURCES_PATH)?;
|
||||||
file.write_all(serde_yml::to_string(self)?.as_bytes())?;
|
file.write_all(serde_yml::to_string(self)?.as_bytes())?;
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn load_from_disk() -> Result<Self> {
|
pub fn load_from_disk() -> Result<Self> {
|
||||||
let content = std::fs::read_to_string(&*USED_RESOURCES)?;
|
let content = std::fs::read_to_string(&*USED_RESOURCES_PATH)?;
|
||||||
let res: Self = serde_yml::from_str(&content)?;
|
let res: Self = serde_yml::from_str(&content)?;
|
||||||
Ok(res)
|
Ok(res)
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
use anyhow::Result;
|
||||||
|
use ed25519_dalek::SigningKey;
|
||||||
|
use log::{info, warn};
|
||||||
|
use std::fs::File;
|
||||||
|
use std::io::Write;
|
||||||
use std::sync::LazyLock;
|
use std::sync::LazyLock;
|
||||||
|
|
||||||
pub const NODE_PUBKEY: &str = "0xd0837609aedd53854651210327db90f5c2626188a00e940bbc9eea2c7e6838b7";
|
pub const NODE_PUBKEY: &str = "0xd0837609aedd53854651210327db90f5c2626188a00e940bbc9eea2c7e6838b7";
|
||||||
@ -11,15 +16,15 @@ pub const APP_NAME_PREFIX: &str = "dtpm";
|
|||||||
|
|
||||||
const DETEE_DIR_ENV_NAME: &str = "DETEE_DIR";
|
const DETEE_DIR_ENV_NAME: &str = "DETEE_DIR";
|
||||||
|
|
||||||
// TODO: try lazy static later
|
pub static IP_INFO: LazyLock<IPInfo> = LazyLock::new(|| get_ip_info().unwrap());
|
||||||
|
|
||||||
pub static USED_RESOURCES: LazyLock<String> = LazyLock::new(|| {
|
pub static USED_RESOURCES_PATH: LazyLock<String> = LazyLock::new(|| {
|
||||||
let home = home::home_dir().unwrap().to_string_lossy().into_owned();
|
let home = home::home_dir().unwrap().to_string_lossy().into_owned();
|
||||||
std::env::var(DETEE_DIR_ENV_NAME)
|
std::env::var(DETEE_DIR_ENV_NAME)
|
||||||
.unwrap_or(format!("{home}/.detee/app_daemon/used_resources.yaml"))
|
.unwrap_or(format!("{home}/.detee/app_daemon/USED_RESOURCES_PATH.yaml"))
|
||||||
});
|
});
|
||||||
|
|
||||||
pub static DAEMON_CONFIG_DIR: LazyLock<String> = LazyLock::new(|| {
|
pub static DAEMON_CONFIG_PATH: LazyLock<String> = LazyLock::new(|| {
|
||||||
let home = home::home_dir().unwrap().to_string_lossy().into_owned();
|
let home = home::home_dir().unwrap().to_string_lossy().into_owned();
|
||||||
std::env::var(DETEE_DIR_ENV_NAME).unwrap_or(format!("{home}/.detee/app_daemon/config.yaml"))
|
std::env::var(DETEE_DIR_ENV_NAME).unwrap_or(format!("{home}/.detee/app_daemon/config.yaml"))
|
||||||
});
|
});
|
||||||
@ -28,3 +33,63 @@ pub static APP_CONFIG_DIR: LazyLock<String> = LazyLock::new(|| {
|
|||||||
let home = home::home_dir().unwrap().to_string_lossy().into_owned();
|
let home = home::home_dir().unwrap().to_string_lossy().into_owned();
|
||||||
std::env::var(DETEE_DIR_ENV_NAME).unwrap_or(format!("{home}/.detee/app_daemon/deployed_apps/"))
|
std::env::var(DETEE_DIR_ENV_NAME).unwrap_or(format!("{home}/.detee/app_daemon/deployed_apps/"))
|
||||||
});
|
});
|
||||||
|
|
||||||
|
pub static SECRET_KEY_PATH: LazyLock<String> = LazyLock::new(|| {
|
||||||
|
let home = home::home_dir().unwrap().to_string_lossy().into_owned();
|
||||||
|
std::env::var(DETEE_DIR_ENV_NAME)
|
||||||
|
.unwrap_or(format!("{home}/.detee/app_daemon/node_secret_key.pem"))
|
||||||
|
});
|
||||||
|
|
||||||
|
pub static PUBLIC_KEY: LazyLock<String> = LazyLock::new(get_public_key);
|
||||||
|
|
||||||
|
#[derive(serde::Deserialize, Clone)]
|
||||||
|
pub struct IPInfo {
|
||||||
|
pub country: String,
|
||||||
|
pub region: String,
|
||||||
|
pub city: String,
|
||||||
|
pub ip: String,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_ip_info() -> anyhow::Result<IPInfo> {
|
||||||
|
let body = reqwest::blocking::get("https://ipinfo.io/".to_string())?.text()?;
|
||||||
|
log::info!("Got the following data from ipinfo.io: {body}");
|
||||||
|
Ok(serde_json::de::from_str(&body)?)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn create_secret_key() -> Result<SigningKey> {
|
||||||
|
let key_path = SECRET_KEY_PATH.to_string();
|
||||||
|
info!("Creating new secret key at {}", key_path);
|
||||||
|
let sk = SigningKey::generate(&mut rand::rngs::OsRng);
|
||||||
|
let private_key_string = bs58::encode(sk.to_bytes()).into_string();
|
||||||
|
let mut file = File::create(key_path)?;
|
||||||
|
file.write_all(private_key_string.as_bytes())?;
|
||||||
|
Ok(sk)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn load_secret_key() -> Result<ed25519_dalek::SigningKey> {
|
||||||
|
let secret_key_string = match std::fs::read_to_string(SECRET_KEY_PATH.to_string()) {
|
||||||
|
Ok(secret_key_pem) => secret_key_pem,
|
||||||
|
Err(e) => {
|
||||||
|
warn!("Could not load secret key due to error: {e:?}");
|
||||||
|
return create_secret_key();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Ok(SigningKey::from_bytes(
|
||||||
|
&bs58::decode(secret_key_string)
|
||||||
|
.into_vec()?
|
||||||
|
.try_into()
|
||||||
|
.map_err(|_| bs58::decode::Error::BufferTooSmall)?,
|
||||||
|
))
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn sign_message(msg: &str) -> Result<String> {
|
||||||
|
use ed25519_dalek::Signer;
|
||||||
|
let key = load_secret_key()?;
|
||||||
|
Ok(bs58::encode(key.sign(msg.as_bytes()).to_bytes()).into_string())
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn get_public_key() -> String {
|
||||||
|
let pubkey = bs58::encode(load_secret_key().unwrap().verifying_key().to_bytes()).into_string();
|
||||||
|
log::info!("Loaded the following public key: {pubkey}");
|
||||||
|
pubkey
|
||||||
|
}
|
||||||
|
26
src/grpc.rs
26
src/grpc.rs
@ -8,16 +8,20 @@ use tokio::sync::mpsc::Sender;
|
|||||||
use tokio::task::JoinSet;
|
use tokio::task::JoinSet;
|
||||||
use tokio_stream::wrappers::ReceiverStream;
|
use tokio_stream::wrappers::ReceiverStream;
|
||||||
use tokio_stream::StreamExt;
|
use tokio_stream::StreamExt;
|
||||||
|
use tonic::metadata::AsciiMetadataValue;
|
||||||
use tonic::transport::Channel;
|
use tonic::transport::Channel;
|
||||||
|
use tonic::Request;
|
||||||
|
|
||||||
|
use crate::global::IP_INFO;
|
||||||
|
use crate::global::PUBLIC_KEY;
|
||||||
use crate::global::{ADMIN_PUBKEY, NODE_PUBKEY};
|
use crate::global::{ADMIN_PUBKEY, NODE_PUBKEY};
|
||||||
use crate::utils::IP_INFO;
|
|
||||||
|
|
||||||
pub struct ConnectionData {
|
pub struct ConnectionData {
|
||||||
pub brain_url: String,
|
pub brain_url: String,
|
||||||
pub brain_msg_tx: Sender<BrainMessageApp>,
|
pub brain_msg_tx: Sender<BrainMessageApp>,
|
||||||
pub daemon_msg_rx: Receiver<DaemonMessageApp>,
|
pub daemon_msg_rx: Receiver<DaemonMessageApp>,
|
||||||
pub daemon_msg_tx: Sender<DaemonMessageApp>,
|
pub daemon_msg_tx: Sender<DaemonMessageApp>,
|
||||||
|
pub app_contracts_uuid: Vec<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn register_node(config: &crate::HostConfig) -> Result<Vec<AppContract>> {
|
pub async fn register_node(config: &crate::HostConfig) -> Result<Vec<AppContract>> {
|
||||||
@ -34,9 +38,20 @@ pub async fn register_node(config: &crate::HostConfig) -> Result<Vec<AppContract
|
|||||||
country: IP_INFO.country.clone(),
|
country: IP_INFO.country.clone(),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
let pubkey = PUBLIC_KEY.clone();
|
||||||
|
let timestamp = chrono::Utc::now().to_rfc3339();
|
||||||
|
let signature = crate::global::sign_message(&format!("{timestamp}{req:?}"))?;
|
||||||
|
let timestamp: AsciiMetadataValue = timestamp.parse()?;
|
||||||
|
let pubkey: AsciiMetadataValue = pubkey.parse()?;
|
||||||
|
let signature: AsciiMetadataValue = signature.parse()?;
|
||||||
|
let mut req = Request::new(req);
|
||||||
|
req.metadata_mut().insert("timestamp", timestamp);
|
||||||
|
req.metadata_mut().insert("pubkey", pubkey);
|
||||||
|
req.metadata_mut().insert("request-signature", signature);
|
||||||
|
|
||||||
let mut container_contracts = vec![];
|
let mut container_contracts = vec![];
|
||||||
|
|
||||||
let mut grpc_stream = client.register_node(req).await?.into_inner();
|
let mut grpc_stream = client.register_app_node(req).await?.into_inner();
|
||||||
while let Some(stream_update) = grpc_stream.next().await {
|
while let Some(stream_update) = grpc_stream.next().await {
|
||||||
match stream_update {
|
match stream_update {
|
||||||
Ok(contract) => {
|
Ok(contract) => {
|
||||||
@ -60,7 +75,11 @@ pub async fn connect_and_run(conn_data: ConnectionData) -> Result<()> {
|
|||||||
|
|
||||||
let mut streaming_tasks = JoinSet::new();
|
let mut streaming_tasks = JoinSet::new();
|
||||||
|
|
||||||
streaming_tasks.spawn(receive_messages(client.clone(), conn_data.brain_msg_tx));
|
streaming_tasks.spawn(receive_messages(
|
||||||
|
client.clone(),
|
||||||
|
conn_data.app_contracts_uuid.clone(),
|
||||||
|
conn_data.brain_msg_tx,
|
||||||
|
));
|
||||||
streaming_tasks.spawn(send_messages(
|
streaming_tasks.spawn(send_messages(
|
||||||
client.clone(),
|
client.clone(),
|
||||||
conn_data.daemon_msg_rx,
|
conn_data.daemon_msg_rx,
|
||||||
@ -74,6 +93,7 @@ pub async fn connect_and_run(conn_data: ConnectionData) -> Result<()> {
|
|||||||
|
|
||||||
pub async fn receive_messages(
|
pub async fn receive_messages(
|
||||||
mut client: BrainAppDaemonClient<Channel>,
|
mut client: BrainAppDaemonClient<Channel>,
|
||||||
|
_contracts: Vec<String>,
|
||||||
tx: Sender<BrainMessageApp>,
|
tx: Sender<BrainMessageApp>,
|
||||||
) -> Result<()> {
|
) -> Result<()> {
|
||||||
let pubkey = NODE_PUBKEY.to_string();
|
let pubkey = NODE_PUBKEY.to_string();
|
||||||
|
11
src/main.rs
11
src/main.rs
@ -28,7 +28,7 @@ pub use crate::config::HostConfig;
|
|||||||
pub use crate::data::HostResources;
|
pub use crate::data::HostResources;
|
||||||
|
|
||||||
use global::APP_CONFIG_DIR;
|
use global::APP_CONFIG_DIR;
|
||||||
use global::DAEMON_CONFIG_DIR;
|
use global::DAEMON_CONFIG_PATH;
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
pub struct AppHandler {
|
pub struct AppHandler {
|
||||||
@ -43,7 +43,7 @@ impl AppHandler {
|
|||||||
// TODO: load from config and resources from file,
|
// TODO: load from config and resources from file,
|
||||||
// if not found use default and save host resources to file
|
// if not found use default and save host resources to file
|
||||||
|
|
||||||
let host_config = match HostConfig::load_from_disk(&DAEMON_CONFIG_DIR) {
|
let host_config = match HostConfig::load_from_disk(&DAEMON_CONFIG_PATH) {
|
||||||
Ok(config) => config,
|
Ok(config) => config,
|
||||||
Err(e) => panic!("Could not load config: {e:?}"),
|
Err(e) => panic!("Could not load config: {e:?}"),
|
||||||
};
|
};
|
||||||
@ -167,8 +167,12 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
let mut app_handler = AppHandler::new(brain_msg_rx, daemon_msg_tx.clone());
|
let mut app_handler = AppHandler::new(brain_msg_rx, daemon_msg_tx.clone());
|
||||||
let brain_url = app_handler.host_config.brain_url.clone();
|
let brain_url = app_handler.host_config.brain_url.clone();
|
||||||
|
|
||||||
|
let mut contracts = vec![];
|
||||||
match grpc::register_node(&app_handler.host_config).await {
|
match grpc::register_node(&app_handler.host_config).await {
|
||||||
Ok(app_contracts) => app_handler.handle_contracts(app_contracts).await,
|
Ok(app_contracts) => {
|
||||||
|
contracts.append(&mut app_contracts.iter().map(|c| c.uuid.clone()).collect());
|
||||||
|
app_handler.handle_contracts(app_contracts).await
|
||||||
|
}
|
||||||
|
|
||||||
Err(e) => log::error!("Failed to connect to brain: {e}"),
|
Err(e) => log::error!("Failed to connect to brain: {e}"),
|
||||||
}
|
}
|
||||||
@ -183,6 +187,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
brain_msg_tx,
|
brain_msg_tx,
|
||||||
daemon_msg_rx,
|
daemon_msg_rx,
|
||||||
daemon_msg_tx,
|
daemon_msg_tx,
|
||||||
|
app_contracts_uuid: contracts,
|
||||||
})
|
})
|
||||||
.await
|
.await
|
||||||
{
|
{
|
||||||
|
16
src/utils.rs
16
src/utils.rs
@ -4,7 +4,6 @@ use rand::Rng;
|
|||||||
use reqwest::Client;
|
use reqwest::Client;
|
||||||
use std::io::BufReader;
|
use std::io::BufReader;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
use std::sync::LazyLock;
|
|
||||||
use tar::Archive;
|
use tar::Archive;
|
||||||
use tokio::io::AsyncWriteExt;
|
use tokio::io::AsyncWriteExt;
|
||||||
use tokio::net::TcpListener;
|
use tokio::net::TcpListener;
|
||||||
@ -12,8 +11,6 @@ use tokio::{fs, fs::File};
|
|||||||
|
|
||||||
use crate::global::{PACKAGE_ARCHIVE_DIR_PATH, PACKAGE_ARCHIVE_POSTFIX, PACKAGE_DIR_PATH};
|
use crate::global::{PACKAGE_ARCHIVE_DIR_PATH, PACKAGE_ARCHIVE_POSTFIX, PACKAGE_DIR_PATH};
|
||||||
|
|
||||||
pub static IP_INFO: LazyLock<IPInfo> = LazyLock::new(|| get_ip_info().unwrap());
|
|
||||||
|
|
||||||
pub async fn handle_package(
|
pub async fn handle_package(
|
||||||
package_url: String,
|
package_url: String,
|
||||||
container_uuid: String,
|
container_uuid: String,
|
||||||
@ -90,19 +87,6 @@ async fn is_port_available(port: u16) -> bool {
|
|||||||
.await
|
.await
|
||||||
.is_ok()
|
.is_ok()
|
||||||
}
|
}
|
||||||
#[derive(serde::Deserialize, Clone)]
|
|
||||||
pub struct IPInfo {
|
|
||||||
pub country: String,
|
|
||||||
pub region: String,
|
|
||||||
pub city: String,
|
|
||||||
pub ip: String,
|
|
||||||
}
|
|
||||||
|
|
||||||
fn get_ip_info() -> anyhow::Result<IPInfo> {
|
|
||||||
let body = reqwest::blocking::get("https://ipinfo.io/".to_string())?.text()?;
|
|
||||||
log::info!("Got the following data from ipinfo.io: {body}");
|
|
||||||
Ok(serde_json::de::from_str(&body)?)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub async fn cleanup_enclave_disk_and_package(container_uuid: String) -> Result<()> {
|
pub async fn cleanup_enclave_disk_and_package(container_uuid: String) -> Result<()> {
|
||||||
let enclave_disk_dir_str = format!("{PACKAGE_DIR_PATH}/{container_uuid}");
|
let enclave_disk_dir_str = format!("{PACKAGE_DIR_PATH}/{container_uuid}");
|
||||||
|
Loading…
Reference in New Issue
Block a user