re-add share stats

This commit is contained in:
Aiden McClelland
2021-10-11 14:04:42 -06:00
committed by Aiden McClelland
parent c3ac27865d
commit 77d34c2a64
11 changed files with 207 additions and 263 deletions

202
appmgr/Cargo.lock generated
View File

@@ -32,9 +32,9 @@ dependencies = [
[[package]]
name = "ahash"
version = "0.7.4"
version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43bb833f0bf979d8475d38fbf09ed3b8a55e1885fe93ad3f93239fc6a4f17b98"
checksum = "991984e3fd003e7ba02eb724f87a0f997b78677c46c0e91f8424ad7394c9886a"
dependencies = [
"getrandom 0.2.3",
"once_cell",
@@ -102,8 +102,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44318e776df68115a881de9a8fd1b9e53368d7a4a5ce4cc48517da3393233a5e"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -208,7 +208,7 @@ dependencies = [
"log",
"peeking_take_while",
"proc-macro2 1.0.29",
"quote 1.0.9",
"quote 1.0.10",
"regex",
"rustc-hash",
"shlex",
@@ -354,9 +354,9 @@ checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8"
[[package]]
name = "cc"
version = "1.0.70"
version = "1.0.71"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d26a6ce4b6a484fa3edb70f7efa6fc430fd2b87285fe8b84304fd0936faa0dc0"
checksum = "79c2681d6594606957bbb8631c4b90a7fcaaa72cdb714743a437b156d6a7eedd"
[[package]]
name = "cexpr"
@@ -686,9 +686,9 @@ dependencies = [
"fnv",
"ident_case",
"proc-macro2 1.0.29",
"quote 1.0.9",
"quote 1.0.10",
"strsim 0.10.0",
"syn 1.0.77",
"syn 1.0.80",
]
[[package]]
@@ -698,8 +698,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ade7bff147130fe5e6d39f089c6bd49ec0250f35d70b2eebf72afdfc919f15cc"
dependencies = [
"darling_core",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -710,9 +710,9 @@ checksum = "40eebddd2156ce1bb37b20bbe5151340a31828b1f2d22ba4141f3531710e38df"
dependencies = [
"convert_case",
"proc-macro2 1.0.29",
"quote 1.0.9",
"quote 1.0.10",
"rustc_version 0.3.3",
"syn 1.0.77",
"syn 1.0.80",
]
[[package]]
@@ -853,7 +853,7 @@ dependencies = [
"lazy_static",
"libc",
"log",
"nix 0.22.1",
"nix 0.22.2",
"num",
"openssh-keys",
"openssl",
@@ -1111,8 +1111,8 @@ dependencies = [
"autocfg",
"proc-macro-hack",
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -1204,8 +1204,8 @@ checksum = "fe69f1cbdb6e28af2bac214e943b99ce8a0a06b447d15d3e61161b0423139f3f"
dependencies = [
"proc-macro-hack",
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -1216,9 +1216,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574"
[[package]]
name = "h2"
version = "0.3.4"
version = "0.3.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7f3675cfef6a30c8031cf9e6493ebdc3bb3272a3fea3923c4210d1830e6a472"
checksum = "6c06815895acec637cd6ed6e9662c935b866d20a106f8361892893a7d9234964"
dependencies = [
"bytes 1.1.0",
"fnv",
@@ -1608,9 +1608,9 @@ checksum = "dd8f7255a17a627354f321ef0055d63b898c6fb27eff628af4d1b66b7331edf6"
[[package]]
name = "libloading"
version = "0.7.0"
version = "0.7.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f84d96438c15fcd6c3f244c8fce01d1e2b9c6b5623e9c711dc9286d8fc92d6a"
checksum = "c0cf036d15402bea3c5d4de17b3fce76b3e4a56ebc1f577be0e7a72f7c607cf0"
dependencies = [
"cfg-if 1.0.0",
"winapi",
@@ -1700,9 +1700,9 @@ checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d"
[[package]]
name = "minimal-lexical"
version = "0.1.3"
version = "0.1.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0c835948974f68e0bd58636fc6c5b1fbff7b297e3046f11b3b3c18bbac012c6d"
checksum = "9c64630dcdd71f1a64c435f54885086a0de5d6a12d104d69b165fb7d5286d677"
[[package]]
name = "miniz_oxide"
@@ -1774,9 +1774,9 @@ dependencies = [
[[package]]
name = "nix"
version = "0.22.1"
version = "0.22.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e7555d6c7164cc913be1ce7f95cbecdabda61eb2ccd89008524af306fb7f5031"
checksum = "d3bb9a13fa32bc5aeb64150cd3f32d6cf4c748f8f8a417cce5d2eb976a8370ba"
dependencies = [
"bitflags",
"cc",
@@ -2044,7 +2044,7 @@ dependencies = [
"json-ptr",
"lazy_static",
"log",
"nix 0.22.1",
"nix 0.22.2",
"patch-db-macro",
"serde",
"serde_cbor 0.11.1",
@@ -2059,7 +2059,7 @@ version = "0.1.0"
dependencies = [
"patch-db-macro-internals",
"proc-macro2 1.0.29",
"syn 1.0.77",
"syn 1.0.80",
]
[[package]]
@@ -2068,8 +2068,8 @@ version = "0.1.0"
dependencies = [
"heck",
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -2146,8 +2146,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6e8fe8163d14ce7f0cdac2e040116f22eac817edabff0be91e8aff7e9accf389"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -2312,9 +2312,9 @@ dependencies = [
[[package]]
name = "quote"
version = "1.0.9"
version = "1.0.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7"
checksum = "38bc8cc6a5f2e3655e0899c1b848643b2562f853f114bfec7be120678e3ace05"
dependencies = [
"proc-macro2 1.0.29",
]
@@ -2488,9 +2488,9 @@ dependencies = [
[[package]]
name = "reqwest"
version = "0.11.4"
version = "0.11.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "246e9f61b9bb77df069a947682be06e31ac43ea37862e244a69f177694ea6d22"
checksum = "51c732d463dd300362ffb44b7b125f299c23d2990411a4253824630ebc7467fb"
dependencies = [
"base64",
"bytes 1.1.0",
@@ -2588,7 +2588,7 @@ version = "0.1.0"
dependencies = [
"proc-macro2 1.0.29",
"rpc-toolkit-macro-internals",
"syn 1.0.77",
"syn 1.0.80",
]
[[package]]
@@ -2596,8 +2596,8 @@ name = "rpc-toolkit-macro-internals"
version = "0.1.0"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -2810,8 +2810,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7bc1a1ab1961464eae040d96713baa5a724a8152c1222492465b54322ec508b"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -2858,8 +2858,8 @@ checksum = "98c1fcca18d55d1763e1c16873c4bde0ac3ef75179a28c7b372917e0494625be"
dependencies = [
"darling",
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -2973,9 +2973,9 @@ checksum = "c307a32c1c5c437f38c7fd45d753050587732ba8628319fbdf12a7e289ccc590"
[[package]]
name = "smallvec"
version = "1.6.1"
version = "1.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e"
checksum = "1ecab6c735a6bb4139c0caafd0cc3635748bbb3acf4550e8138122099251f309"
[[package]]
name = "socket2"
@@ -3006,9 +3006,9 @@ dependencies = [
[[package]]
name = "sqlx"
version = "0.5.7"
version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4b94ab0f8c21ee4899b93b06451ef5d965f1a355982ee73684338228498440"
checksum = "7911b0031a0247af40095838002999c7a52fba29d9739e93326e71a5a1bc9d43"
dependencies = [
"sqlx-core",
"sqlx-macros",
@@ -3016,9 +3016,9 @@ dependencies = [
[[package]]
name = "sqlx-core"
version = "0.5.7"
version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec28b91a01e1fe286d6ba66f68289a2286df023fc97444e1fd86c2fd6d5dc026"
checksum = "aec89bfaca8f7737439bad16d52b07f1ccd0730520d3bf6ae9d069fe4b641fb1"
dependencies = [
"ahash",
"atoi",
@@ -3037,6 +3037,7 @@ dependencies = [
"futures-util",
"hashlink",
"hex",
"indexmap",
"itoa",
"libc",
"libsqlite3-sys",
@@ -3062,32 +3063,31 @@ dependencies = [
[[package]]
name = "sqlx-macros"
version = "0.5.7"
version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4dc33c35d54774eed73d54568d47a6ac099aed8af5e1556a017c131be88217d5"
checksum = "584866c833511b1a152e87a7ee20dee2739746f60c858b3c5209150bc4b466f5"
dependencies = [
"dotenv",
"either",
"futures",
"heck",
"hex",
"once_cell",
"proc-macro2 1.0.29",
"quote 1.0.9",
"quote 1.0.10",
"serde",
"serde_json",
"sha2",
"sqlx-core",
"sqlx-rt",
"syn 1.0.77",
"syn 1.0.80",
"url",
]
[[package]]
name = "sqlx-rt"
version = "0.5.7"
version = "0.5.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "14302b678d9c76b28f2e60115211e25e0aabc938269991745a169753dc00e35c"
checksum = "0d1bd069de53442e7a320f525a6d4deb8bb0621ac7a55f7eccbc2b58b57f43d0"
dependencies = [
"once_cell",
"tokio 1.12.0",
@@ -3143,10 +3143,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"quote 1.0.10",
"serde",
"serde_derive",
"syn 1.0.77",
"syn 1.0.80",
]
[[package]]
@@ -3157,12 +3157,12 @@ checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11"
dependencies = [
"base-x",
"proc-macro2 1.0.29",
"quote 1.0.9",
"quote 1.0.10",
"serde",
"serde_derive",
"serde_json",
"sha1",
"syn 1.0.77",
"syn 1.0.80",
]
[[package]]
@@ -3224,24 +3224,24 @@ dependencies = [
[[package]]
name = "syn"
version = "1.0.77"
version = "1.0.80"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5239bc68e0fef57495900cfea4e8dc75596d9a319d7e16b1e0a440d24e6fe0a0"
checksum = "d010a1623fbd906d51d650a9916aaefc05ffa0e4053ff7fe601167f3e715d194"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"quote 1.0.10",
"unicode-xid 0.2.2",
]
[[package]]
name = "synstructure"
version = "0.12.5"
version = "0.12.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "474aaa926faa1603c40b7885a9eaea29b444d1cb2850cb7c0e37bb1a4182f4fa"
checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
"unicode-xid 0.2.2",
]
@@ -3318,22 +3318,22 @@ dependencies = [
[[package]]
name = "thiserror"
version = "1.0.29"
version = "1.0.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "602eca064b2d83369e2b2f34b09c70b605402801927c65c11071ac911d299b88"
checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.29"
version = "1.0.30"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bad553cc2c78e8de258400763a647e80e6d1b31ee237275d756f6836d204494c"
checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -3400,9 +3400,9 @@ checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f"
dependencies = [
"proc-macro-hack",
"proc-macro2 1.0.29",
"quote 1.0.9",
"quote 1.0.10",
"standback",
"syn 1.0.77",
"syn 1.0.80",
]
[[package]]
@@ -3477,13 +3477,13 @@ dependencies = [
[[package]]
name = "tokio-macros"
version = "1.3.0"
version = "1.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "54473be61f4ebe4efd09cec9bd5d16fa51d70ea0192213d754d2d500457db110"
checksum = "154794c8f499c2619acd19e839294703e9e32e7630ef5f46ea80d4ef0fbee5eb"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -3609,9 +3609,9 @@ checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6"
[[package]]
name = "tracing"
version = "0.1.28"
version = "0.1.29"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "84f96e095c0c82419687c20ddf5cb3eadb61f4e1405923c9dc8e53a1adacbda8"
checksum = "375a639232caf30edfc78e8d89b2d4c375515393e7af7e16f01cd96917fb2105"
dependencies = [
"cfg-if 1.0.0",
"pin-project-lite 0.2.7",
@@ -3626,15 +3626,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f4f480b8f81512e825f337ad51e94c1eb5d3bbdf2b363dcd01e2b19a9ffe3f8e"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
name = "tracing-core"
version = "0.1.20"
version = "0.1.21"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "46125608c26121c81b0c6d693eab5a420e416da7e43c426d2e8f7df8da8a3acf"
checksum = "1f4ed65637b8390770814083d20756f87bfa2c21bf2f110babdc5438351746e4"
dependencies = [
"lazy_static",
]
@@ -3704,9 +3704,9 @@ dependencies = [
[[package]]
name = "treediff"
version = "4.0.0"
version = "4.0.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9975655adeb6c47931d6bcd4173a493a1feb510a549f9e5f41f6f1f9fc24836f"
checksum = "52984d277bdf2a751072b5df30ec0377febdb02f7696d64c2d7d54630bac4303"
dependencies = [
"serde_json",
]
@@ -3744,8 +3744,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a46ee5bd706ff79131be9c94e7edcb82b703c487766a114434e5790361cf08c5"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
]
[[package]]
@@ -3762,9 +3762,9 @@ checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c"
[[package]]
name = "unicode-bidi"
version = "0.3.6"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "246f4c42e67e7a4e3c6106ff716a5d067d4132a642840b242e357e468a2a0085"
checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f"
[[package]]
name = "unicode-normalization"
@@ -3886,8 +3886,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "632f73e236b219150ea279196e54e610f5dbafa5d61786303d4da54f84e47fce"
dependencies = [
"cfg-if 1.0.0",
"serde",
"serde_json",
"wasm-bindgen-macro",
]
@@ -3901,8 +3899,8 @@ dependencies = [
"lazy_static",
"log",
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
"wasm-bindgen-shared",
]
@@ -3924,7 +3922,7 @@ version = "0.2.78"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d56146e7c495528bf6587663bea13a8eb588d39b36b679d83972e1a2dbbdacf9"
dependencies = [
"quote 1.0.9",
"quote 1.0.10",
"wasm-bindgen-macro-support",
]
@@ -3935,8 +3933,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7803e0eea25835f8abdc585cd3021b3deb11543c6fe226dcd30b228857c5c5ab"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -3987,9 +3985,9 @@ dependencies = [
[[package]]
name = "whoami"
version = "1.1.4"
version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cabfe22aa4936611957e0b5ad9ed0472ac52b2bfb9aedac4a3f3a91a03bd1ff0"
checksum = "483a59fee1a93fec90eb08bc2eb4315ef10f4ebc478b3a5fadc969819cb66117"
dependencies = [
"wasm-bindgen",
"web-sys",
@@ -4085,7 +4083,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bdff2024a851a322b08f179173ae2ba620445aef1e838f0c196820eade4ae0c7"
dependencies = [
"proc-macro2 1.0.29",
"quote 1.0.9",
"syn 1.0.77",
"quote 1.0.10",
"syn 1.0.80",
"synstructure",
]

View File

@@ -6,6 +6,7 @@ Wants=avahi-daemon.service nginx.service tor.service
[Service]
Type=oneshot
Environment=RUST_LOG=embassy_init=info,embassy=info
ExecStart=/usr/local/bin/embassy-init -vvv
RemainAfterExit=true

View File

@@ -5,7 +5,8 @@ Requires=embassy-init.service
[Service]
Type=simple
ExecStart=/usr/local/bin/embassyd -vvv
Environment=RUST_LOG=embassyd=info,embassy=info
ExecStart=/usr/local/bin/embassyd
Restart=always
RestartSec=3

View File

@@ -5,7 +5,6 @@ use embassy::Error;
use rpc_toolkit::run_cli;
use rpc_toolkit::yajrc::RpcError;
use serde_json::Value;
use tracing::metadata::LevelFilter;
fn inner_main() -> Result<(), Error> {
run_cli!({
@@ -18,36 +17,20 @@ fn inner_main() -> Result<(), Error> {
.long("config")
.takes_value(true),
)
.arg(
clap::Arg::with_name("verbosity")
.short("v")
.multiple(true)
.takes_value(false),
)
.arg(Arg::with_name("host").long("host").short("h").takes_value(true))
.arg(Arg::with_name("proxy").long("proxy").short("p").takes_value(true)),
context: matches => {
EmbassyLogger::init(
match matches.occurrences_of("verbosity") {
0 => LevelFilter::OFF,
1 => LevelFilter::ERROR,
2 => LevelFilter::WARN,
3 => LevelFilter::INFO,
4 => LevelFilter::DEBUG,
_ => LevelFilter::TRACE,
},
Default::default(),
None,
false,
Default::default(),
);
EmbassyLogger::no_sharing();
CliContext::init(matches)?
},
exit: |e: RpcError| {
match e.data {
Some(Value::String(s)) => eprintln!("{}: {}", e.message, s),
Some(Value::Object(o)) => if let Some(Value::String(s)) = o.get("details") {
eprintln!("{}: {}", e.message, s)
eprintln!("{}: {}", e.message, s);
if let Some(Value::String(s)) = o.get("debug") {
tracing::debug!("{}", s)
}
}
Some(a) => eprintln!("{}: {}", e.message, a),
None => eprintln!("{}", e.message),

View File

@@ -1,10 +1,8 @@
use std::path::Path;
use color_eyre::eyre::eyre;
use embassy::context::rpc::RpcContextConfig;
use embassy::context::{DiagnosticContext, SetupContext};
use embassy::db::model::ServerStatus;
use embassy::db::DatabaseModel;
use embassy::disk::main::DEFAULT_PASSWORD;
use embassy::middleware::cors::cors;
use embassy::middleware::diagnostic::diagnostic;
@@ -13,12 +11,11 @@ use embassy::middleware::encrypt::encrypt;
use embassy::net::mdns::MdnsController;
use embassy::sound::MARIO_COIN;
use embassy::util::logger::EmbassyLogger;
use embassy::util::{Invoke, Version};
use embassy::util::Invoke;
use embassy::{Error, ResultExt};
use http::StatusCode;
use rpc_toolkit::rpc_server;
use tokio::process::Command;
use tracing::metadata::LevelFilter;
fn status_fn(_: i32) -> StatusCode {
StatusCode::OK
@@ -255,36 +252,9 @@ fn main() {
.long("config")
.takes_value(true),
)
.arg(
clap::Arg::with_name("verbosity")
.short("v")
.multiple(true)
.takes_value(false),
)
.get_matches();
// simple_logging::log_to_stderr(match matches.occurrences_of("verbosity") {
// 0 => LevelFilter::OFF,
// 1 => LevelFilter::ERROR,
// 2 => LevelFilter::WARN,
// 3 => LevelFilter::INFO,
// 4 => LevelFilter::DEBUG,
// _ => LevelFilter::TRACE,
// });
EmbassyLogger::init(
match matches.occurrences_of("verbosity") {
0 => LevelFilter::OFF,
1 => LevelFilter::ERROR,
2 => LevelFilter::WARN,
3 => LevelFilter::INFO,
4 => LevelFilter::DEBUG,
_ => LevelFilter::TRACE,
},
Default::default(),
None,
false,
Default::default(),
);
EmbassyLogger::no_sharing();
let cfg_path = matches.value_of("config");
let res = {

View File

@@ -1,4 +1,5 @@
use embassy::context::SdkContext;
use embassy::util::logger::EmbassyLogger;
use embassy::Error;
use rpc_toolkit::run_cli;
use rpc_toolkit::yajrc::RpcError;
@@ -14,29 +15,19 @@ fn inner_main() -> Result<(), Error> {
.short("c")
.long("config")
.takes_value(true),
)
.arg(
clap::Arg::with_name("verbosity")
.short("v")
.multiple(true)
.takes_value(false),
),
context: matches => {
simple_logging::log_to_stderr(match matches.occurrences_of("verbosity") {
0 => tracing::LevelFilter::Off,
1 => tracing::LevelFilter::Error,
2 => tracing::LevelFilter::Warn,
3 => tracing::LevelFilter::Info,
4 => tracing::LevelFilter::Debug,
_ => tracing::LevelFilter::Trace,
});
EmbassyLogger::no_sharing();
SdkContext::init(matches)?
},
exit: |e: RpcError| {
match e.data {
Some(Value::String(s)) => eprintln!("{}: {}", e.message, s),
Some(Value::Object(o)) => if let Some(Value::String(s)) = o.get("details") {
eprintln!("{}: {}", e.message, s)
eprintln!("{}: {}", e.message, s);
if let Some(Value::String(s)) = o.get("debug") {
tracing::debug!("{}", s)
}
}
Some(a) => eprintln!("{}: {}", e.message, a),
None => eprintln!("{}", e.message),

View File

@@ -1,7 +1,6 @@
use std::collections::BTreeMap;
use std::time::Duration;
use color_eyre::eyre::{self, eyre};
use color_eyre::eyre::eyre;
use embassy::context::{DiagnosticContext, RpcContext};
use embassy::db::subscribe;
use embassy::middleware::auth::auth;
@@ -21,7 +20,6 @@ use rpc_toolkit::rpc_server;
use tokio::process::Command;
use tokio::signal::unix::signal;
use tracing::instrument;
use tracing::metadata::LevelFilter;
fn status_fn(_: i32) -> StatusCode {
StatusCode::OK
@@ -36,12 +34,8 @@ fn err_to_500(e: Error) -> Response<Body> {
}
#[instrument]
async fn inner_main(
cfg_path: Option<&str>,
log_level: LevelFilter,
module_logging: BTreeMap<String, LevelFilter>,
) -> Result<Option<Shutdown>, Error> {
let rpc_ctx = RpcContext::init(cfg_path, log_level, module_logging).await?;
async fn inner_main(cfg_path: Option<&str>) -> Result<Option<Shutdown>, Error> {
let rpc_ctx = RpcContext::init(cfg_path).await?;
let mut shutdown_recv = rpc_ctx.shutdown.subscribe();
let sig_handler_ctx = rpc_ctx.clone();
@@ -256,41 +250,8 @@ fn main() {
.long("config")
.takes_value(true),
)
.arg(
clap::Arg::with_name("verbosity")
.short("v")
.multiple(true)
.takes_value(false),
)
.arg(
clap::Arg::with_name("log-module")
.long("log-module")
.multiple(true)
.takes_value(true),
)
.get_matches();
// initializes the bootstrap logger, this will be replaced with the EmbassyLogger later
let filter = match matches.occurrences_of("verbosity") {
0 => LevelFilter::ERROR,
1 => LevelFilter::WARN,
2 => LevelFilter::INFO,
3 => LevelFilter::DEBUG,
_ => LevelFilter::TRACE,
};
let module_logging = matches
.values_of("log-module")
.into_iter()
.flatten()
.filter_map(|s| s.split_once("="))
.map(|(m, l)| {
(
m.to_owned(),
l.parse()
.expect(&format!("Invalid 'log-module' argument: {}", l)),
)
})
.collect::<BTreeMap<_, LevelFilter>>();
let cfg_path = matches.value_of("config");
let res = {
@@ -299,11 +260,11 @@ fn main() {
.build()
.expect("failed to initialize runtime");
rt.block_on(async {
match inner_main(cfg_path, filter, module_logging).await {
match inner_main(cfg_path).await {
Ok(a) => Ok(a),
Err(e) => {
(|| async {
tracing::error!("{:?}", e.source);
tracing::error!("{}", e.source);
tracing::debug!("{:?}", e.source);
embassy::sound::BEETHOVEN.play().await?;
#[cfg(feature = "avahi")]

View File

@@ -1,5 +1,5 @@
use std::borrow::Cow;
use std::collections::{BTreeMap, VecDeque};
use std::collections::VecDeque;
use std::net::{IpAddr, Ipv4Addr, SocketAddr, SocketAddrV4};
use std::ops::Deref;
use std::path::{Path, PathBuf};
@@ -20,7 +20,6 @@ use tokio::fs::File;
use tokio::sync::broadcast::Sender;
use tokio::sync::RwLock;
use tracing::instrument;
use tracing::metadata::LevelFilter;
use crate::db::model::Database;
use crate::hostname::{get_hostname, get_id};
@@ -134,20 +133,10 @@ pub struct RpcContextSeed {
#[derive(Clone)]
pub struct RpcContext(Arc<RpcContextSeed>);
impl RpcContext {
pub async fn init<P: AsRef<Path>>(
cfg_path: Option<P>,
log_level: LevelFilter,
module_logging: BTreeMap<String, LevelFilter>,
) -> Result<Self, Error> {
pub async fn init<P: AsRef<Path>>(cfg_path: Option<P>) -> Result<Self, Error> {
let base = RpcContextConfig::load(cfg_path).await?;
let log_epoch = Arc::new(AtomicU64::new(rand::random()));
let logger = EmbassyLogger::init(
log_level,
log_epoch.clone(),
base.log_server.clone(),
false,
module_logging,
);
let logger = EmbassyLogger::init(log_epoch.clone(), base.log_server.clone(), false);
let (shutdown, _) = tokio::sync::broadcast::channel(1);
let secret_store = base.secret_store().await?;
let db = base.db(&secret_store).await?;

View File

@@ -218,8 +218,9 @@ impl From<openssl::error::ErrorStack> for Error {
}
impl From<Error> for RpcError {
fn from(e: Error) -> Self {
let mut data_object = serde_json::Map::with_capacity(2);
let mut data_object = serde_json::Map::with_capacity(3);
data_object.insert("details".to_owned(), format!("{}", e.source).into());
data_object.insert("debug".to_owned(), format!("{:?}", e.source).into());
data_object.insert(
"revision".to_owned(),
match serde_json::to_value(&e.revision) {

View File

@@ -2,9 +2,14 @@ use std::collections::BTreeMap;
use std::sync::atomic::{AtomicBool, AtomicU64, Ordering};
use std::sync::Arc;
use reqwest::Url;
use reqwest::{Client, Url};
use sequence_trie::SequenceTrie;
use serde::Serialize;
use tracing::Subscriber;
use tracing_subscriber::filter::LevelFilter;
use tracing_subscriber::Layer;
use crate::version::COMMIT_HASH;
#[derive(Clone, Debug)]
pub struct ModuleMap {
@@ -81,48 +86,92 @@ impl ModuleMap {
}
}
#[derive(Clone)]
pub struct EmbassyLogger {
log_level: LevelFilter,
pub struct SharingLayer {
log_epoch: Arc<AtomicU64>,
sharing: Arc<AtomicBool>,
share_dest: String,
}
impl<S: Subscriber> Layer<S> for SharingLayer {
fn on_event(
&self,
event: &tracing::Event<'_>,
_ctx: tracing_subscriber::layer::Context<'_, S>,
) {
if self.sharing.load(Ordering::SeqCst) {
#[derive(Serialize)]
#[serde(rename_all = "kebab-case")]
struct LogRequest<'a> {
log_epoch: u64,
commit_hash: &'static str,
file: Option<&'a str>,
line: Option<u32>,
target: &'a str,
level: &'static str,
message: Option<String>,
}
if event.metadata().level() <= &tracing::Level::WARN {
let body = LogRequest {
log_epoch: self.log_epoch.load(Ordering::SeqCst),
commit_hash: COMMIT_HASH,
file: event.metadata().file(),
line: event.metadata().line(),
target: event.metadata().target(),
level: event.metadata().level().as_str(),
message: event
.fields()
.find(|f| f.name() == "message")
.map(|f| f.to_string()),
};
// we don't care about the result and need it to be fast
tokio::spawn(Client::new().post(&self.share_dest).json(&body).send());
}
}
}
}
#[derive(Clone)]
pub struct EmbassyLogger {
log_epoch: Arc<AtomicU64>,
sharing: Arc<AtomicBool>,
share_dest: Url,
module_map: ModuleMap,
}
impl EmbassyLogger {
pub fn init(
log_level: LevelFilter,
log_epoch: Arc<AtomicU64>,
share_dest: Option<Url>,
share_errors: bool,
module_map: BTreeMap<String, LevelFilter>,
) -> Self {
let share_dest = match share_dest {
None => Url::parse("https://beta-registry-0-3.start9labs.com/error-logs").unwrap(), // TODO
Some(a) => a,
};
fn base_subscriber() -> impl Subscriber {
use tracing_error::ErrorLayer;
use tracing_subscriber::prelude::*;
use tracing_subscriber::{fmt, EnvFilter};
let fmt_layer = fmt::layer().with_target(false);
let filter_layer = EnvFilter::from_default_env().add_directive(log_level.into());
let filter_layer = EnvFilter::from_default_env();
let fmt_layer = fmt::layer().with_target(true);
tracing_subscriber::registry()
.with(filter_layer)
.with(fmt_layer)
.with(ErrorLayer::default())
.init();
}
pub fn no_sharing() {
use tracing_subscriber::prelude::*;
Self::base_subscriber().init();
color_eyre::install().expect("Color Eyre Init");
let embassy_logger = EmbassyLogger {
log_level,
log_epoch,
sharing: Arc::new(AtomicBool::new(share_errors)),
share_dest: share_dest,
module_map: ModuleMap::new(module_map),
}
pub fn init(log_epoch: Arc<AtomicU64>, share_dest: Option<Url>, share_errors: bool) -> Self {
use tracing_subscriber::prelude::*;
let share_dest = match share_dest {
None => "https://beta-registry-0-3.start9labs.com/error-logs".to_owned(), // TODO
Some(a) => a.to_string(),
};
embassy_logger
let sharing = Arc::new(AtomicBool::new(share_errors));
let sharing_layer = SharingLayer {
log_epoch: log_epoch.clone(),
share_dest,
sharing: sharing.clone(),
};
Self::base_subscriber().with(sharing_layer).init();
color_eyre::install().expect("Color Eyre Init");
EmbassyLogger { log_epoch, sharing }
}
pub fn set_sharing(&self, sharing: bool) {
self.sharing.store(sharing, Ordering::SeqCst)

View File

@@ -175,10 +175,10 @@ pub async fn self_update(requirement: emver::VersionRange) -> Result<(), Error>
todo!()
}
pub const COMMIT_HASH: &'static str =
git_version::git_version!(args = ["--always", "--abbrev=40", "--dirty=-modified"]);
#[command(rename = "git-info", local, metadata(authenticated = false))]
pub fn git_info() -> Result<String, Error> {
Ok(
git_version::git_version!(args = ["--always", "--abbrev=40", "--dirty=-modified"])
.to_owned(),
)
pub fn git_info() -> Result<&'static str, Error> {
Ok(COMMIT_HASH)
}