From 663eaa1c0b594a0823f1248c487dc177153eaa76 Mon Sep 17 00:00:00 2001 From: librelois <c@elo.tf> Date: Thu, 6 May 2021 00:26:12 +0200 Subject: [PATCH] [ref] externalyze gva configuration --- Cargo.lock | 341 ++++++++++++++++-- Cargo.toml | 18 +- app/lib/common-libs/programOptions.ts | 2 - app/lib/dal/fileDAL.ts | 1 - app/lib/dto/ConfDTO.ts | 14 - doc/use/configure.md | 35 +- neon/native/Cargo.toml | 2 +- neon/native/server.d.ts | 2 +- neon/native/src/server.rs | 7 +- rust-bins/duniter-cli/src/config.rs | 4 +- rust-bins/duniter-cli/src/duniter_ts_args.rs | 3 +- rust-bins/duniter-cli/src/main.rs | 102 +++--- rust-bins/duniter-cli/src/wizard_gva.rs | 235 ------------ rust-bins/duniter-dbex/Cargo.toml | 2 +- rust-libs/duniter-server/Cargo.toml | 4 +- rust-libs/duniter-server/src/legacy/dunp.rs | 6 +- rust-libs/duniter-server/src/lib.rs | 36 +- .../duniter-integration-tests/Cargo.toml | 2 +- .../duniter-integration-tests/src/lib.rs | 3 +- 19 files changed, 428 insertions(+), 391 deletions(-) delete mode 100644 rust-bins/duniter-cli/src/wizard_gva.rs diff --git a/Cargo.lock b/Cargo.lock index 02308ce7a..697e79232 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -114,7 +114,7 @@ checksum = "6fd4c2eb837e894909fe13509f2351fa3990c114426e41255936800892ccbe26" dependencies = [ "Inflector", "async-graphql-parser", - "darling", + "darling 0.12.4", "proc-macro-crate", "proc-macro2", "quote", @@ -600,14 +600,38 @@ dependencies = [ "snafu", ] +[[package]] +name = "darling" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d706e75d87e35569db781a9b5e2416cff1236a47ed380831f959382ccd5f858" +dependencies = [ + "darling_core 0.10.2", + "darling_macro 0.10.2", +] + [[package]] name = "darling" version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f2c43f534ea4b0b049015d00269734195e6d3f0f6635cb692251aca6f9f8b3c" dependencies = [ - "darling_core", - "darling_macro", + "darling_core 0.12.4", + "darling_macro 0.12.4", +] + +[[package]] +name = "darling_core" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0c960ae2da4de88a91b2d920c2a7233b400bc33cb28453a2987822d8392519b" +dependencies = [ + "fnv", + "ident_case", + "proc-macro2", + "quote", + "strsim 0.9.3", + "syn", ] [[package]] @@ -624,13 +648,66 @@ dependencies = [ "syn", ] +[[package]] +name = "darling_macro" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b5a2f4ac4969822c62224815d069952656cadc7084fdca9751e6d959189b72" +dependencies = [ + "darling_core 0.10.2", + "quote", + "syn", +] + [[package]] name = "darling_macro" version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "29b5acf0dea37a7f66f7b25d2c5e93fd46f8f6968b1a5d7a3e02e97768afc95a" dependencies = [ - "darling_core", + "darling_core 0.12.4", + "quote", + "syn", +] + +[[package]] +name = "data-encoding" +version = "2.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3ee2393c4a91429dffb4bedf19f4d6abf27d8a732c8ce4980305d782e5426d57" + +[[package]] +name = "derivative" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_builder" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a2658621297f2cf68762a6f7dc0bb7e1ff2cfd6583daef8ee0fed6f7ec468ec0" +dependencies = [ + "darling 0.10.2", + "derive_builder_core", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "derive_builder_core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2791ea3e372c8495c0bc2033991d76b512cd799d07491fbd6890124db9458bef" +dependencies = [ + "darling 0.10.2", + "proc-macro2", "quote", "syn", ] @@ -685,6 +762,18 @@ dependencies = [ "winapi", ] +[[package]] +name = "dns-lookup" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb4c5ce3a7034c5eb66720bb16e9ac820e01b29032ddc06dd0fe47072acf7454" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "socket2", + "winapi", +] + [[package]] name = "doc-comment" version = "0.3.3" @@ -693,9 +782,9 @@ checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" [[package]] name = "dubp" -version = "0.51.1" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "914faa8052c72c8b2f513a44398123379d70a59dfedf0aa8dc7b581ee223fbfc" +checksum = "a5cee825e59cde21a3622de781d15f74cbea92f01eb1554a8c73818eb61a5998" dependencies = [ "dubp-block", "dubp-common", @@ -707,9 +796,9 @@ dependencies = [ [[package]] name = "dubp-block" -version = "0.51.1" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15cc90473a86c4987ea34211829d491dfb56f7c09ba79ac3d57d9430782d038" +checksum = "f4b26027dafcf4631bd7d7a2b1b25e54453c475a613b5ef7db4356f51f71c0eb" dependencies = [ "dubp-documents", "dubp-documents-parser", @@ -722,9 +811,9 @@ dependencies = [ [[package]] name = "dubp-common" -version = "0.51.1" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3a5a6cc11940e0a85f492325fec45c557c5f103c92ea445427b4272c1a12395" +checksum = "2dc000f2a3366c1bd985015f95adb3520e8e0b007ca5f77882eea1ea119d84f4" dependencies = [ "dup-crypto", "serde", @@ -735,9 +824,9 @@ dependencies = [ [[package]] name = "dubp-documents" -version = "0.51.1" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85d43233426a5a24a5d22e98da2d8f0efab9739a58af15fa27e74a213b2d5bb9" +checksum = "6e96808a8ced0617ba93ed6fee00d88902f33e2f61a36ec9a841e8972ef5cd3a" dependencies = [ "beef", "dubp-wallet", @@ -749,9 +838,9 @@ dependencies = [ [[package]] name = "dubp-documents-parser" -version = "0.51.1" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac382364d99af3c235530f9de41a1833d18a16dff8833a7b351e8946d378de18" +checksum = "a9c60f5c2804a9906777f96a62514c1f9f58abaab4c57f01db4fa7c45624e6fb" dependencies = [ "dubp-documents", "json-pest-parser", @@ -763,9 +852,9 @@ dependencies = [ [[package]] name = "dubp-wallet" -version = "0.51.1" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47cc059e6b139def809f9d0bf776a21f5c2d59fefc20ed30c7aceedfef8de703" +checksum = "f277bed6bc228981f76f207f4112051656302b5c50c0a858ab138ae2215d49fe" dependencies = [ "byteorder", "dubp-common", @@ -778,7 +867,7 @@ dependencies = [ [[package]] name = "dubp-wot" version = "0.11.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#f9abadd0145d848ba4df2ab545639355c7f20386" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#06f484b17a8336ec908ef423f32cbd0a5a0f16f5" dependencies = [ "log", "rayon", @@ -788,7 +877,7 @@ dependencies = [ [[package]] name = "duniter-bc-reader" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#f9abadd0145d848ba4df2ab545639355c7f20386" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#06f484b17a8336ec908ef423f32cbd0a5a0f16f5" dependencies = [ "anyhow", "dubp", @@ -799,7 +888,7 @@ dependencies = [ [[package]] name = "duniter-bca" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7c1f8e58872fe2931f780c9b5e6b80caa3f3683a" +source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#838d817ab042e2331194b91a36ccad18a829a88a" dependencies = [ "anyhow", "arrayvec", @@ -822,7 +911,7 @@ dependencies = [ [[package]] name = "duniter-bca-types" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7c1f8e58872fe2931f780c9b5e6b80caa3f3683a" +source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#838d817ab042e2331194b91a36ccad18a829a88a" dependencies = [ "arrayvec", "bincode", @@ -840,6 +929,8 @@ dependencies = [ "ctrlc", "daemonize-me", "dirs", + "duniter-core", + "duniter-gva-conf", "log", "logwatcher", "nix 0.17.0", @@ -852,16 +943,20 @@ dependencies = [ [[package]] name = "duniter-conf" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#f9abadd0145d848ba4df2ab545639355c7f20386" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#06f484b17a8336ec908ef423f32cbd0a5a0f16f5" dependencies = [ + "anyhow", "dubp", + "envy", + "futures-util", "serde", + "serde_json", ] [[package]] name = "duniter-core" version = "1.8.1" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#f9abadd0145d848ba4df2ab545639355c7f20386" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#06f484b17a8336ec908ef423f32cbd0a5a0f16f5" dependencies = [ "duniter-bc-reader", "duniter-conf", @@ -898,7 +993,7 @@ dependencies = [ [[package]] name = "duniter-dbs" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#f9abadd0145d848ba4df2ab545639355c7f20386" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#06f484b17a8336ec908ef423f32cbd0a5a0f16f5" dependencies = [ "arrayvec", "bincode", @@ -909,7 +1004,7 @@ dependencies = [ "log", "parking_lot", "paste", - "rand 0.7.3", + "rand 0.8.3", "serde", "serde_json", "smallvec", @@ -921,7 +1016,7 @@ dependencies = [ [[package]] name = "duniter-dbs-write-ops" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#f9abadd0145d848ba4df2ab545639355c7f20386" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#06f484b17a8336ec908ef423f32cbd0a5a0f16f5" dependencies = [ "chrono", "dubp", @@ -936,7 +1031,7 @@ dependencies = [ [[package]] name = "duniter-global" version = "1.8.1" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#f9abadd0145d848ba4df2ab545639355c7f20386" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#06f484b17a8336ec908ef423f32cbd0a5a0f16f5" dependencies = [ "async-rwlock", "dubp", @@ -949,7 +1044,7 @@ dependencies = [ [[package]] name = "duniter-gva" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7c1f8e58872fe2931f780c9b5e6b80caa3f3683a" +source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#838d817ab042e2331194b91a36ccad18a829a88a" dependencies = [ "anyhow", "arrayvec", @@ -960,6 +1055,7 @@ dependencies = [ "dubp", "duniter-bca", "duniter-core", + "duniter-gva-conf", "duniter-gva-db", "duniter-gva-dbs-reader", "duniter-gva-gql", @@ -976,10 +1072,22 @@ dependencies = [ "warp", ] +[[package]] +name = "duniter-gva-conf" +version = "0.1.0" +source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#838d817ab042e2331194b91a36ccad18a829a88a" +dependencies = [ + "anyhow", + "duniter-core", + "read_input", + "serde", + "structopt", +] + [[package]] name = "duniter-gva-db" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7c1f8e58872fe2931f780c9b5e6b80caa3f3683a" +source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#838d817ab042e2331194b91a36ccad18a829a88a" dependencies = [ "bincode", "chrono", @@ -996,7 +1104,7 @@ dependencies = [ [[package]] name = "duniter-gva-dbs-reader" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7c1f8e58872fe2931f780c9b5e6b80caa3f3683a" +source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#838d817ab042e2331194b91a36ccad18a829a88a" dependencies = [ "anyhow", "arrayvec", @@ -1010,7 +1118,7 @@ dependencies = [ [[package]] name = "duniter-gva-gql" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7c1f8e58872fe2931f780c9b5e6b80caa3f3683a" +source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#838d817ab042e2331194b91a36ccad18a829a88a" dependencies = [ "anyhow", "arrayvec", @@ -1031,7 +1139,7 @@ dependencies = [ [[package]] name = "duniter-gva-indexer" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#7c1f8e58872fe2931f780c9b5e6b80caa3f3683a" +source = "git+https://git.duniter.org/nodes/rust/modules/duniter-gva#838d817ab042e2331194b91a36ccad18a829a88a" dependencies = [ "anyhow", "dubp", @@ -1060,7 +1168,7 @@ dependencies = [ [[package]] name = "duniter-mempools" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#f9abadd0145d848ba4df2ab545639355c7f20386" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#06f484b17a8336ec908ef423f32cbd0a5a0f16f5" dependencies = [ "dubp", "duniter-bc-reader", @@ -1073,9 +1181,10 @@ dependencies = [ [[package]] name = "duniter-module" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#f9abadd0145d848ba4df2ab545639355c7f20386" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#06f484b17a8336ec908ef423f32cbd0a5a0f16f5" dependencies = [ "anyhow", + "async-mutex", "async-trait", "dubp", "duniter-conf", @@ -1083,7 +1192,10 @@ dependencies = [ "duniter-global", "duniter-mempools", "fast-threadpool", + "futures-util", "log", + "public-ip", + "serde", ] [[package]] @@ -1124,9 +1236,9 @@ dependencies = [ [[package]] name = "dup-crypto" -version = "0.51.1" +version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3b8d3e1c65e3ed89db6973e807e9c355c8f9078866402e695a16683f1e226d2" +checksum = "1c530e25cc0a03ae36229401ca322002931b55fc180e6001bdab20a9087f297c" dependencies = [ "base64", "blake3", @@ -1134,6 +1246,7 @@ dependencies = [ "byteorder", "cryptoxide", "getrandom 0.2.2", + "hex", "ring", "serde", "thiserror", @@ -1156,6 +1269,24 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "endian-type" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c34f04666d835ff5d62e058c3995147c06f42fe86ff053337632bca83e42702d" + +[[package]] +name = "enum-as-inner" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c5f0096a91d210159eceb2ff5e1c4da18388a170e1e3ce948aac9c8fdbbf595" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "envmnt" version = "0.8.4" @@ -1166,6 +1297,15 @@ dependencies = [ "indexmap", ] +[[package]] +name = "envy" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965" +dependencies = [ + "serde", +] + [[package]] name = "error-chain" version = "0.12.4" @@ -1512,6 +1652,12 @@ dependencies = [ "libc", ] +[[package]] +name = "hex" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" + [[package]] name = "http" version = "0.2.4" @@ -1570,6 +1716,21 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-system-resolver" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12f3e7696766b62825bf735a1df9d8b727525b83ae5427ee955258800858bd73" +dependencies = [ + "derivative", + "derive_builder", + "dns-lookup", + "hyper", + "tokio", + "tower-service", + "tracing", +] + [[package]] name = "ident_case" version = "1.0.1" @@ -1615,6 +1776,12 @@ dependencies = [ "cfg-if 1.0.0", ] +[[package]] +name = "ipnet" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" + [[package]] name = "itertools" version = "0.9.0" @@ -1663,7 +1830,7 @@ dependencies = [ [[package]] name = "kv_typed" version = "0.1.0" -source = "git+https://git.duniter.org/nodes/rust/duniter-core#f9abadd0145d848ba4df2ab545639355c7f20386" +source = "git+https://git.duniter.org/nodes/rust/duniter-core#06f484b17a8336ec908ef423f32cbd0a5a0f16f5" dependencies = [ "byteorder", "cfg-if 0.1.10", @@ -1920,6 +2087,15 @@ version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab250442c86f1850815b5d268639dff018c0627022bc1940eb2d642ca1ce12f0" +[[package]] +name = "nibble_vec" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43" +dependencies = [ + "smallvec", +] + [[package]] name = "nix" version = "0.17.0" @@ -2225,6 +2401,26 @@ dependencies = [ "unicode-xid", ] +[[package]] +name = "public-ip" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba5e48e5087711724b4536dfe11a201a20ae91a7f1b08e3e17a1053459e20580" +dependencies = [ + "dns-lookup", + "futures-core", + "futures-util", + "http", + "hyper", + "hyper-system-resolver", + "pin-project-lite", + "thiserror", + "tokio", + "tracing", + "trust-dns-client", + "trust-dns-proto", +] + [[package]] name = "quick-error" version = "1.2.3" @@ -2240,6 +2436,16 @@ dependencies = [ "proc-macro2", ] +[[package]] +name = "radix_trie" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c069c179fcdc6a2fe24d8d18305cf085fdbd4f922c041943e203685d6a1c58fd" +dependencies = [ + "endian-type", + "nibble_vec", +] + [[package]] name = "rand" version = "0.7.3" @@ -2717,6 +2923,12 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a" +[[package]] +name = "strsim" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c" + [[package]] name = "strsim" version = "0.10.0" @@ -2972,9 +3184,21 @@ dependencies = [ "cfg-if 1.0.0", "log", "pin-project-lite", + "tracing-attributes", "tracing-core", ] +[[package]] +name = "tracing-attributes" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c42e6fa53307c8a17e4ccd4dc81cf5ec38db9209f59b222210375b54ee40d1e2" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + [[package]] name = "tracing-core" version = "0.1.17" @@ -2984,6 +3208,51 @@ dependencies = [ "lazy_static", ] +[[package]] +name = "trust-dns-client" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f557e7009d16747a0363f9127588c3c236f279b4caa1177d703221a258dd3f3" +dependencies = [ + "cfg-if 1.0.0", + "chrono", + "data-encoding", + "futures-channel", + "futures-util", + "lazy_static", + "log", + "radix_trie", + "rand 0.8.3", + "thiserror", + "tokio", + "trust-dns-proto", +] + +[[package]] +name = "trust-dns-proto" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "952a078337565ba39007de99b151770f41039253a31846f0a3d5cd5a4ac8eedf" +dependencies = [ + "async-trait", + "cfg-if 1.0.0", + "data-encoding", + "enum-as-inner", + "futures-channel", + "futures-io", + "futures-util", + "idna", + "ipnet", + "lazy_static", + "log", + "rand 0.8.3", + "smallvec", + "thiserror", + "tinyvec", + "tokio", + "url", +] + [[package]] name = "try-lock" version = "0.2.3" diff --git a/Cargo.toml b/Cargo.toml index a73d885fc..03ce6084a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,8 @@ [package] authors = ["elois <elois@duniter.org>"] -description = "Duniter launcher." +description = "Duniter cli." edition = "2018" -keywords = ["duniter", "launcher"] +keywords = ["duniter"] license = "AGPL-3.0" name = "duniter-cli" repository = "https://git.duniter.org/nodes/typescript/duniter" @@ -18,6 +18,8 @@ anyhow = "1.0.32" ctrlc = "3.1.6" daemonize-me = "0.3.1" dirs = "3.0.1" +duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core", features = ["bc-writer"] } +duniter-gva-conf = { git = "https://git.duniter.org/nodes/rust/modules/duniter-gva", optional = true } log = "0.4.11" logwatcher = "0.1.1" nix = "0.17.0" @@ -28,6 +30,11 @@ structopt = "0.3.18" [dev-dependencies] rusty-hook = "0.11.2" +[features] +default = ["gva"] + +gva = ["duniter-gva-conf"] + [workspace] members = [ "neon/native", @@ -37,9 +44,14 @@ members = [ "rust-libs/tests/duniter-integration-tests", ] +[patch.'https://git.duniter.org/nodes/rust/duniter-core'] +#duniter-core = { path = "../duniter-core" } + +[patch.'https://git.duniter.org/nodes/rust/modules/duniter-gva'] +#duniter-gva = { path = "../duniter-gva" } + [patch.crates-io] #dubp = { git = "https://git.duniter.org/libs/dubp-rs-libs" } - #dubp = { path = "../dubp-rs-libs" } #leveldb_minimal = { path = "../../../../rust/leveldb_minimal" } diff --git a/app/lib/common-libs/programOptions.ts b/app/lib/common-libs/programOptions.ts index 6ec4f1bb0..5842b8398 100644 --- a/app/lib/common-libs/programOptions.ts +++ b/app/lib/common-libs/programOptions.ts @@ -28,8 +28,6 @@ export interface ProgramOptions { loglevel?: string; sqlTraces?: boolean; memory?: boolean; - gva?: boolean; - noGva?: boolean; } export const cliprogram: ProgramOptions = { diff --git a/app/lib/dal/fileDAL.ts b/app/lib/dal/fileDAL.ts index 423c07f66..204cc1b47 100644 --- a/app/lib/dal/fileDAL.ts +++ b/app/lib/dal/fileDAL.ts @@ -247,7 +247,6 @@ export class FileDAL implements ServerDAO { let rustServerConf = { command: commandName, currency: currency || "", - gva: conf.gva, selfKeypair, txsMempoolSize: conf.txsMempoolSize || constants.SANDBOX_SIZE_TRANSACTIONS, diff --git a/app/lib/dto/ConfDTO.ts b/app/lib/dto/ConfDTO.ts index 534234e19..83bc1240d 100644 --- a/app/lib/dto/ConfDTO.ts +++ b/app/lib/dto/ConfDTO.ts @@ -180,20 +180,6 @@ export class ConfDTO public bmaWithCrawler: boolean, public nonWoTPeersLimit: number, public proxiesConf: ProxiesConf | undefined, - public gva?: { - enabled: boolean; - ip4?: string; - ip6?: string; - port?: number; - path?: string; - subscriptionsPath?: string; - remoteHost?: string; - remotePort?: number; - remotePath?: string; - remoteSubscriptionsPath?: string; - remoteTls?: boolean; - whitelist?: string[]; - }, public ws2p?: { privateAccess?: boolean; publicAccess?: boolean; diff --git a/doc/use/configure.md b/doc/use/configure.md index 5c29a8e4b..82db20444 100644 --- a/doc/use/configure.md +++ b/doc/use/configure.md @@ -183,28 +183,37 @@ This mode is optional if only because technically it is sometimes difficult or e ### Configuring GVA -GVA is still disabled by default, to enable it you need to use wizard command: +GVA is still disabled by default, to enable it you have 2 choices: -`duniter wizard gva` +- Use command `duniter gva configure`, you will be invited to configure GVA interactively. +- Set environment variable `DUNITER_GVA_ENABLED="true"` It is also possible to manually edit `conf.json` file : -| parameter | type | default value | -|:-:|:-:|:-:| -| ip4 | IPv4 | `"127.0.0.1"` | -| ip6 | IPv6 | `"::1"` | -| port | number | `30901` | -| path | string | `"gva"` | -| remotePath | string | `"gva"` | -| subscriptionsPath | string | `"gva-sub"` | -| remoteSubscriptionsPath | string | `"gva-sub"` | -| remoteTls | boolean | `false` | -| whitelist | IP[] | `["127.0.0.1", "::1"]` | +| parameter | type | mandatory | default value | +|:-:|:-:|:-:|:-:| +| enabled | boolean | yes | `true` | +| ip4 | IPv4 | yes | `"0.0.0.0"` | +| ip6 | IPv6 | no | `"::"` | +| port | number | yes | `30901` | +| path | string | yes | `"gva"` | +| remoteHost | string | no | - | +| remotePath | string | no | `"gva"` | +| subscriptionsPath | string | no | `"gva-sub"` | +| remoteSubscriptionsPath | string | no | `"gva-sub"` | +| remoteTls | boolean | no | `false` | +| whitelist | IP[] | no | `["127.0.0.1", "::1"]` | GVA server listen to `http://<ip4|ip6>:<port>/<remotePath>` GVA subscriptions websocket server listen to `ws://<ip4|ip6>:<port>/<remoteSubscriptionsPath>` +Each parameter can be redefined by the environment variable of the parameter name in uppercase prefixed by `DUNITER_GVA_`. + +For example, the `remotePath` parameter can be redefined by the `DUNITER_GVA_REMOTE_PATH` environment variable. + +Environment variables are only taken into account if all mandatory parameters are defined by environment variables. + ## Synchronize your node To join the network of a currency you must synchronize with a node already on this network: diff --git a/neon/native/Cargo.toml b/neon/native/Cargo.toml index c0de6dee9..9a5eef1bf 100644 --- a/neon/native/Cargo.toml +++ b/neon/native/Cargo.toml @@ -17,7 +17,7 @@ neon-build = "0.4.0" [dependencies] bincode = "1.2.1" bs58 = "0.3.0" -dubp = { version = "0.51.0", features = ["duniter"] } +dubp = { version = "0.53.1", features = ["duniter"] } dubp-wot = { git = "https://git.duniter.org/nodes/rust/duniter-core" } duniter-server = { path = "../../rust-libs/duniter-server" } flate2 = "1.0.16" diff --git a/neon/native/server.d.ts b/neon/native/server.d.ts index c65a605b1..a75d2334e 100644 --- a/neon/native/server.d.ts +++ b/neon/native/server.d.ts @@ -35,6 +35,7 @@ export class BlockDTOV10 { } export class GvaConf { + enabled: boolean; ip4?: string ip6?: string port?: number @@ -84,7 +85,6 @@ export class RustDbTx { export class RustServerConf { command: string | null currency: string - gva: GvaConf | undefined selfKeypair: string | null txsMempoolSize: number } diff --git a/neon/native/src/server.rs b/neon/native/src/server.rs index b159b807e..881b5bc1a 100644 --- a/neon/native/src/server.rs +++ b/neon/native/src/server.rs @@ -21,7 +21,7 @@ use dubp::documents::{ }; use dubp::documents_parser::prelude::*; use dubp::{common::crypto::hashs::Hash, crypto::keys::ed25519::Ed25519KeyPair}; -use duniter_server::{DuniterConf, DuniterMode, DuniterServer, GvaConf}; +use duniter_server::{DuniterCoreConf, DuniterMode, DuniterServer}; use neon::declare_types; use neon::prelude::*; use serde::{Deserialize, Serialize}; @@ -39,7 +39,6 @@ declare_types! { let rust_server_conf_stringified: RustServerConfStringified = neon_serde::from_value(&mut cx, rust_server_conf_js)?; - let gva_conf = rust_server_conf_stringified.gva; let currency = rust_server_conf_stringified.currency; let self_key_pair = if let Some(self_keypair_str) = rust_server_conf_stringified.self_keypair { into_neon_res(&mut cx, crate::crypto::keypair_from_expanded_base58_secret_key(&self_keypair_str))? @@ -47,8 +46,7 @@ declare_types! { Ed25519KeyPair::generate_random().expect("fail to gen random keyypair") }; let txs_mempool_size = rust_server_conf_stringified.txs_mempool_size as usize; - let conf = DuniterConf { - gva: gva_conf, + let conf = DuniterCoreConf { self_key_pair, txs_mempool_size }; @@ -475,7 +473,6 @@ pub struct PeerCardStringified { #[serde(rename_all = "camelCase")] struct RustServerConfStringified { currency: String, - gva: Option<GvaConf>, self_keypair: Option<String>, txs_mempool_size: u32, } diff --git a/rust-bins/duniter-cli/src/config.rs b/rust-bins/duniter-cli/src/config.rs index 25acdd272..40c21bc05 100644 --- a/rust-bins/duniter-cli/src/config.rs +++ b/rust-bins/duniter-cli/src/config.rs @@ -34,7 +34,7 @@ impl FromStr for Percent { } #[derive(StructOpt)] -pub(crate) struct DuniterConfigArgs { +pub(crate) struct DuniterCoreConfigArgs { /// Percent of CPU usage for proof-of-work computation #[structopt(long)] cpu: Option<Percent>, @@ -153,7 +153,7 @@ pub(crate) struct DuniterConfigArgs { force_tor: bool, } -pub(crate) fn gen_args(args: &DuniterConfigArgs, duniter_js_args: &mut Vec<String>) { +pub(crate) fn gen_args(args: &DuniterCoreConfigArgs, duniter_js_args: &mut Vec<String>) { if let Some(Percent(cpu_percent)) = args.cpu { duniter_js_args.push("--cpu".into()); duniter_js_args.push(cpu_percent.to_string()); diff --git a/rust-bins/duniter-cli/src/duniter_ts_args.rs b/rust-bins/duniter-cli/src/duniter_ts_args.rs index ff76068a9..1c2f8aa37 100644 --- a/rust-bins/duniter-cli/src/duniter_ts_args.rs +++ b/rust-bins/duniter-cli/src/duniter_ts_args.rs @@ -76,6 +76,8 @@ pub(crate) fn gen_duniter_ts_args(args: &DuniterArgs, duniter_js_exe: String) -> gen_start_args(start_args, &mut duniter_ts_args); gen_webstart_args(webstart_args, &mut duniter_ts_args); } + #[cfg(feature = "gva")] + DuniterCommand::Gva(_) => unreachable!(), DuniterCommand::Start(ref start_args) => { duniter_ts_args.push("direct_start".to_owned()); gen_start_args(start_args, &mut duniter_ts_args); @@ -126,7 +128,6 @@ pub(crate) fn gen_duniter_ts_args(args: &DuniterArgs, duniter_js_exe: String) -> duniter_ts_args.push(p.to_string()); } } - WizardCommand::Gva { .. } => unreachable!(), } } DuniterCommand::WS2P(ref ws2p_command) => { diff --git a/rust-bins/duniter-cli/src/main.rs b/rust-bins/duniter-cli/src/main.rs index 53807347b..7554dea88 100644 --- a/rust-bins/duniter-cli/src/main.rs +++ b/rust-bins/duniter-cli/src/main.rs @@ -29,10 +29,11 @@ mod config; mod daemon; mod duniter_ts_args; mod sync; -mod wizard_gva; -use anyhow::{anyhow, Context, Result}; +use anyhow::{anyhow, Result}; use daemonize_me::Daemon; +#[cfg(feature = "gva")] +use duniter_gva_conf::GvaCommand; use logwatcher::{LogWatcher, LogWatcherAction}; use nix::{errno::Errno, sys::signal::Signal, unistd::Pid, Error}; use std::{ @@ -78,7 +79,10 @@ enum DuniterCommand { display_order(0), after_help("Some advanced options are hidden for readability.") )] - Config(Box<config::DuniterConfigArgs>), + Config(Box<config::DuniterCoreConfigArgs>), + #[cfg(feature = "gva")] + #[structopt(display_order(1))] + Gva(GvaCommand), /// Launch the configuration wizard. #[structopt(display_order(1))] Wizard(WizardCommand), @@ -170,8 +174,6 @@ enum WizardCommand { #[structopt(short)] p: Option<usize>, }, - #[structopt(display_order(1))] - Gva, #[structopt(display_order(2), alias = "network")] Bma, } @@ -214,54 +216,56 @@ fn main() -> Result<()> { } else { let profile_path = get_profile_path(args.profile.as_deref())?; - if let DuniterCommand::Wizard(WizardCommand::Gva) = args.command { - wizard_gva::wizard_gva(args.profile.as_deref(), profile_path) - } else { - let current_exe = std::env::current_exe()?; - let prod = current_exe == PathBuf::from(DUNITER_EXE_LINK_PATH) - || current_exe == PathBuf::from(DUNITER_EXE_PATH); + #[cfg(feature = "gva")] + if let DuniterCommand::Gva(gva_command) = args.command { + return gva_command.command(profile_path); + } - let duniter_ts_args = duniter_ts_args::gen_duniter_ts_args(&args, duniter_js_exe()?); + let current_exe = std::env::current_exe()?; + let prod = current_exe == PathBuf::from(DUNITER_EXE_LINK_PATH) + || current_exe == PathBuf::from(DUNITER_EXE_PATH); - match args.command { - DuniterCommand::Restart => { - daemon::start(prod, &profile_path, &daemon::stop(&profile_path)?) - } - DuniterCommand::Start(_) | DuniterCommand::Webstart { .. } => { - daemon::start(prod, &profile_path, &duniter_ts_args) - } - DuniterCommand::Status => daemon::status(&profile_path), - DuniterCommand::Stop => { - daemon::stop(&profile_path)?; - Ok(()) + let duniter_ts_args = duniter_ts_args::gen_duniter_ts_args(&args, duniter_js_exe()?); + + match args.command { + DuniterCommand::Restart => { + daemon::start(prod, &profile_path, &daemon::stop(&profile_path)?) + } + DuniterCommand::Start(_) | DuniterCommand::Webstart { .. } => { + daemon::start(prod, &profile_path, &duniter_ts_args) + } + DuniterCommand::Status => daemon::status(&profile_path), + DuniterCommand::Stop => { + daemon::stop(&profile_path)?; + Ok(()) + } + DuniterCommand::Logs => watch_logs(profile_path), + _ => { + ctrlc::set_handler(move || { + // This empty handler is necessary otherwise the Rust process is stopped immediately + // without waiting for the child process (duniter_js) to finish stopping. + })?; + let mut duniter_js_command = Command::new(get_node_path()?); + if prod { + duniter_js_command.current_dir(DUNITER_JS_CURRENT_DIR); } - DuniterCommand::Logs => watch_logs(profile_path), - _ => { - ctrlc::set_handler(move || { - // This empty handler is necessary otherwise the Rust process is stopped immediately - // without waiting for the child process (duniter_js) to finish stopping. - })?; - let mut duniter_js_command = Command::new(get_node_path()?); - if prod { - duniter_js_command.current_dir(DUNITER_JS_CURRENT_DIR); - } - //println!("TMP duniter_ts_args={:?}", duniter_ts_args); - let mode = match args.command { - DuniterCommand::DirectStart { .. } - | DuniterCommand::DirectWebstart { .. } => "start", - DuniterCommand::Sync(_) => "sync", - _ => "other", - }; - let exit_code_opt = duniter_js_command - .args(duniter_ts_args) - .env("DUNITER_MODE", mode) - .status()? - .code(); - if let Some(exit_code) = exit_code_opt { - std::process::exit(exit_code); - } else { - Ok(()) + //println!("TMP duniter_ts_args={:?}", duniter_ts_args); + let mode = match args.command { + DuniterCommand::DirectStart { .. } | DuniterCommand::DirectWebstart { .. } => { + "start" } + DuniterCommand::Sync(_) => "sync", + _ => "other", + }; + let exit_code_opt = duniter_js_command + .args(duniter_ts_args) + .env("DUNITER_MODE", mode) + .status()? + .code(); + if let Some(exit_code) = exit_code_opt { + std::process::exit(exit_code); + } else { + Ok(()) } } } diff --git a/rust-bins/duniter-cli/src/wizard_gva.rs b/rust-bins/duniter-cli/src/wizard_gva.rs deleted file mode 100644 index 473ee7702..000000000 --- a/rust-bins/duniter-cli/src/wizard_gva.rs +++ /dev/null @@ -1,235 +0,0 @@ -// Copyright (C) 2020 Éloïs SANCHEZ. -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU Affero General Public License as -// published by the Free Software Foundation, either version 3 of the -// License, or (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Affero General Public License for more details. -// -// You should have received a copy of the GNU Affero General Public License -// along with this program. If not, see <https://www.gnu.org/licenses/>. - -use crate::*; -use read_input::prelude::*; -use std::{ - collections::HashSet, - net::IpAddr, - net::{Ipv4Addr, Ipv6Addr}, - str::FromStr, -}; - -/* -struct GvaConf { - host: Option<String>, - port: Option<u16>, - path: Option<String>, - subscriptions_path: Option<String>, - remote_host: Option<String>, - remote_port: Option<u16>, - remote_path: Option<String>, - remote_subscriptions_path: Option<String>, - remote_tls: Option<bool>, -} -*/ - -pub(crate) fn wizard_gva(profile_name_opt: Option<&str>, profile_path: PathBuf) -> Result<()> { - let file_path = profile_path.join("conf.json"); - - if !file_path.exists() { - if let Some(profile_name) = profile_name_opt { - Command::new(duniter_js_exe()?) - .args(&["--mdb", profile_name, "config"]) - .status()?; - } else { - Command::new(duniter_js_exe()?).arg("config").status()?; - } - } - - let mut file = File::open(file_path.as_path())?; - let mut contents = String::new(); - file.read_to_string(&mut contents)?; - - let mut conf_json = if contents.is_empty() { - serde_json::Value::Object(serde_json::Map::new()) - } else { - serde_json::Value::from_str(&contents)? - }; - - let conf_json_obj = conf_json - .as_object_mut() - .ok_or_else(|| anyhow::Error::msg("json conf must be an object"))?; - - // Get existing whitelist - let mut whitelist = HashSet::new(); - if let Some(gva_conf) = conf_json_obj.get("gva") { - let gva_conf_obj = gva_conf - .as_object() - .ok_or_else(|| anyhow::Error::msg("gva conf must be an object"))?; - if let Some(whitelist_json) = gva_conf_obj.get("whitelist") { - let whitelist_array = whitelist_json - .as_array() - .ok_or_else(|| anyhow::Error::msg("gva.whitelist must be an array"))?; - for ip_json in whitelist_array { - if let serde_json::Value::String(ip_str) = ip_json { - whitelist.insert( - IpAddr::from_str(ip_str).context("gva.whitelist contains invalid IP")?, - ); - } - } - } else { - whitelist.insert(IpAddr::V4(Ipv4Addr::LOCALHOST)); - whitelist.insert(IpAddr::V6(Ipv6Addr::LOCALHOST)); - } - } else { - whitelist.insert(IpAddr::V4(Ipv4Addr::LOCALHOST)); - whitelist.insert(IpAddr::V6(Ipv6Addr::LOCALHOST)); - }; - - let mut gva_conf = serde_json::Map::new(); - - // Enable GVA API? - let res = input().msg("Enable GVA API? [Y/n]").default('Y').get(); - let gva_enabled = res != 'n'; - gva_conf.insert("enabled".to_owned(), serde_json::Value::Bool(gva_enabled)); - - if gva_enabled { - // ip4 - let ip4 = input() - .msg("Listen to ip v4 ? [127.0.0.1]") - .default(Ipv4Addr::LOCALHOST) - .get(); - gva_conf.insert("ip4".to_owned(), serde_json::Value::String(ip4.to_string())); - // ip6 - let res = input().msg("Listen to ip v6? [Y/n]").default('Y').get(); - if res != 'n' { - let ip6 = input() - .msg("Enter ip v6: [::1]") - .default(Ipv6Addr::LOCALHOST) - .get(); - gva_conf.insert("ip6".to_owned(), serde_json::Value::String(ip6.to_string())); - } - // port - let port = input() - .msg("Listen to port ? [30901]") - .default(30901u16) - .get(); - gva_conf.insert( - "port".to_owned(), - serde_json::Value::Number(serde_json::Number::from(port)), - ); - // path - let path = input().msg("Path ? [gva]").default("gva".to_owned()).get(); - gva_conf.insert("path".to_owned(), serde_json::Value::String(path)); - // subscriptionsPath - let subscriptions_path = input() - .msg("Subscriptions path ? [gva-sub]") - .default("gva-sub".to_owned()) - .get(); - gva_conf.insert( - "subscriptionsPath".to_owned(), - serde_json::Value::String(subscriptions_path), - ); - // remoteHost - let res = input() - .msg("Define a remote host? [y/N]") - .default('N') - .get(); - if res == 'y' || res == 'Y' { - let remote_host = input().msg("Enter remote host:").get(); - gva_conf.insert( - "remoteHost".to_owned(), - serde_json::Value::String(remote_host), - ); - } - // remotePort - let res = input() - .msg("Define a remote port? [y/N]") - .default('N') - .get(); - if res == 'y' || res == 'Y' { - let remote_port = input() - .msg("Enter remote port ? [443]") - .default(443u16) - .get(); - gva_conf.insert( - "remotePort".to_owned(), - serde_json::Value::Number(serde_json::Number::from(remote_port)), - ); - } - // remotePath - let res = input() - .msg("Define a remote path? [y/N]") - .default('N') - .get(); - if res == 'y' || res == 'Y' { - let remote_path = input().msg("Enter remote path:").get(); - gva_conf.insert( - "remotePath".to_owned(), - serde_json::Value::String(remote_path), - ); - } - // remoteSubscriptionsPath - let res = input() - .msg("Define a remote subscriptions path? [y/N]") - .default('N') - .get(); - if res == 'y' || res == 'Y' { - let remote_path = input().msg("Enter remote subscriptions path:").get(); - gva_conf.insert( - "remoteSubscriptionsPath".to_owned(), - serde_json::Value::String(remote_path), - ); - } - // whitelist - let res = input().msg("Update whitelist? [y/N]").default('N').get(); - if res == 'y' || res == 'Y' { - loop { - println!("1. See whitelist content."); - println!("2. Add an IP to the whitelist."); - println!("3. Removing an IP from the whitelist."); - println!("4. Quit."); - match input().msg("Choose an action: ").default(1).get() { - 2usize => { - whitelist.insert(input().msg("Enter a new IP address: ").get()); - } - 3 => { - whitelist - .remove(&input().msg("Indicate the IP address to be deleted: ").get()); - } - 4 => break, - _ => { - println!("--------------------------------"); - println!("Whitelist content ({} IPs):", whitelist.len()); - whitelist.iter().for_each(|ip| println!("{}", ip)); - println!("--------------------------------"); - } - } - } - } - gva_conf.insert( - "whitelist".to_owned(), - serde_json::Value::Array( - whitelist - .into_iter() - .map(|ip| serde_json::Value::String(ip.to_string())) - .collect(), - ), - ); - } - - // Insert GVA json conf in global json conf - conf_json_obj.insert("gva".to_owned(), serde_json::Value::Object(gva_conf)); - - // Write new_conf - let new_conf_str = serde_json::to_string_pretty(&conf_json)?; - let mut file = File::create(file_path.as_path())?; - file.write_all(new_conf_str.as_bytes())?; - - println!("Configuration successfully updated."); - - Ok(()) -} diff --git a/rust-bins/duniter-dbex/Cargo.toml b/rust-bins/duniter-dbex/Cargo.toml index b018a8747..cc5f9fdd4 100644 --- a/rust-bins/duniter-dbex/Cargo.toml +++ b/rust-bins/duniter-dbex/Cargo.toml @@ -22,7 +22,7 @@ anyhow = "1.0.33" arrayvec = "0.5.1" comfy-table = "2.1.0" dirs = "3.0.1" -dubp = { version = "0.51.0", features = ["duniter"] } +dubp = { version = "0.53.1", features = ["duniter"] } duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core", features = ["bc-writer", "explorer", "leveldb_backend"] } duniter-gva-db = { git = "https://git.duniter.org/nodes/rust/modules/duniter-gva", default-features = false, features = ["explorer", "leveldb_backend"] } duniter-gva-indexer = { git = "https://git.duniter.org/nodes/rust/modules/duniter-gva" } diff --git a/rust-libs/duniter-server/Cargo.toml b/rust-libs/duniter-server/Cargo.toml index 3cfbc9ed7..52fbb64bd 100644 --- a/rust-libs/duniter-server/Cargo.toml +++ b/rust-libs/duniter-server/Cargo.toml @@ -8,9 +8,9 @@ edition = "2018" [dependencies] anyhow = "1.0.34" cfg-if = "1.0.0" -dubp = { version = "0.51.0", features = ["duniter"] } +dubp = { version = "0.53.1", features = ["duniter"] } duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core", features = ["bc-writer"] } -duniter-gva = { git = "https://git.duniter.org/nodes/rust/modules/duniter-gva", optional = true } +duniter-gva = { git = "https://git.duniter.org/nodes/rust/modules/duniter-gva", optional = true } fast-threadpool = "0.2.3" flume = "0.10.0" log = "0.4.11" diff --git a/rust-libs/duniter-server/src/legacy/dunp.rs b/rust-libs/duniter-server/src/legacy/dunp.rs index 99f54a6fb..ef720fd4e 100644 --- a/rust-libs/duniter-server/src/legacy/dunp.rs +++ b/rust-libs/duniter-server/src/legacy/dunp.rs @@ -18,7 +18,7 @@ use crate::*; impl DuniterServer { pub fn get_self_endpoints(&self) -> anyhow::Result<Vec<Endpoint>> { // Do not get rust endpoints on js tests or when gva is disabled - if std::env::var_os("DUNITER_JS_TESTS") != Some("yes".into()) && self.conf.gva.is_some() { + if std::env::var_os("DUNITER_JS_TESTS") != Some("yes".into()) { let (sender, recv) = flume::bounded(1); loop { self.global_sender @@ -105,7 +105,7 @@ mod tests { #[test] fn test_receive_new_heads() -> anyhow::Result<()> { - let server = DuniterServer::test(DuniterConf::default(), DuniterMode::Start)?; + let server = DuniterServer::test(DuniterCoreConf::default(), DuniterMode::Start)?; let dbs = server.get_shared_dbs(); let head = ( @@ -134,7 +134,7 @@ mod tests { #[test] fn test_save_peer() -> anyhow::Result<()> { use duniter_core::dbs::databases::network_v1::NetworkV1DbReadable as _; - let server = DuniterServer::test(DuniterConf::default(), DuniterMode::Start)?; + let server = DuniterServer::test(DuniterCoreConf::default(), DuniterMode::Start)?; let dbs = server.get_shared_dbs(); let peer = PeerCardDbV1 { diff --git a/rust-libs/duniter-server/src/lib.rs b/rust-libs/duniter-server/src/lib.rs index 571adbe64..e031a1583 100644 --- a/rust-libs/duniter-server/src/lib.rs +++ b/rust-libs/duniter-server/src/lib.rs @@ -25,7 +25,7 @@ mod fill_cm; mod legacy; -pub use duniter_core::conf::{gva_conf::GvaConf, DuniterConf, DuniterMode}; +pub use duniter_core::conf::{DuniterCoreConf, DuniterMode}; use duniter_core::dbs::databases::network_v1::NetworkV1DbWritable; pub use duniter_core::dbs::{ kv_typed::prelude::KvResult, smallvec, DunpHeadDbV1, DunpNodeIdV1Db, PeerCardDbV1, @@ -62,7 +62,7 @@ use duniter_core::global as duniter_global; use duniter_core::mempools as duniter_mempools; cfg_if::cfg_if! { if #[cfg(feature = "gva")] { - use duniter_core::module::DuniterModule as _; + use duniter_core::module::DuniterModule; plug_duniter_modules!([GvaModule], TxsHistoryForBma); } else { plug_duniter_modules!([], TxsHistoryForBma); @@ -71,7 +71,7 @@ cfg_if::cfg_if! { pub struct DuniterServer { bc_db: BcV2Db<FileBackend>, - conf: DuniterConf, + conf: DuniterCoreConf, current: Option<BlockMetaV2>, dbs_pool: fast_threadpool::ThreadPoolSyncHandler<SharedDbs<FileBackend>>, global_sender: flume::Sender<GlobalBackGroundTaskMsg>, @@ -87,7 +87,7 @@ impl DuniterServer { self.shared_dbs.clone() } pub fn start( - conf: DuniterConf, + conf: DuniterCoreConf, currency: String, duniter_mode: DuniterMode, profile_path_opt: Option<&Path>, @@ -136,20 +136,18 @@ impl DuniterServer { duniter_core::global::start_global_background_task(global_recv).await; // Start duniter modules - if conf_clone.gva.is_some() { - log::info!("start duniter modules..."); - start_duniter_modules( - &conf_clone, - currency, - threadpool_async_handler, - Mempools { txs: txs_mempool }, - duniter_mode, - profile_path_opt_clone, - software_version, - ) - .await - .expect("Fail to start duniter modules"); - } + log::info!("start duniter modules..."); + start_duniter_modules( + &conf_clone, + currency, + threadpool_async_handler, + Mempools { txs: txs_mempool }, + duniter_mode, + profile_path_opt_clone, + software_version, + ) + .await + .expect("Fail to start duniter modules"); }); }); @@ -169,7 +167,7 @@ impl DuniterServer { } #[cfg(test)] pub(crate) fn test( - conf: DuniterConf, + conf: DuniterCoreConf, duniter_mode: DuniterMode, ) -> anyhow::Result<DuniterServer> { DuniterServer::start( diff --git a/rust-libs/tests/duniter-integration-tests/Cargo.toml b/rust-libs/tests/duniter-integration-tests/Cargo.toml index e775f0c15..a2d59ced2 100644 --- a/rust-libs/tests/duniter-integration-tests/Cargo.toml +++ b/rust-libs/tests/duniter-integration-tests/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" [dependencies] anyhow = "1.0.34" -dubp = { version = "0.51.0", features = ["duniter"] } +dubp = { version = "0.53.1", features = ["duniter"] } duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core", features = ["bc-writer"] } duniter-server = { path = "../../duniter-server", features = ["gva"] } fast-threadpool = "0.2.3" diff --git a/rust-libs/tests/duniter-integration-tests/src/lib.rs b/rust-libs/tests/duniter-integration-tests/src/lib.rs index 231959e42..d45f396a1 100644 --- a/rust-libs/tests/duniter-integration-tests/src/lib.rs +++ b/rust-libs/tests/duniter-integration-tests/src/lib.rs @@ -35,8 +35,7 @@ mod tests { #[test] fn test_txs_history() -> anyhow::Result<()> { let server = DuniterServer::start( - DuniterConf { - gva: None, + DuniterCoreConf { self_key_pair: Ed25519KeyPair::generate_random() .expect("fail to gen random keypair"), txs_mempool_size: 200, -- GitLab