feat(gva): reget conf handling & handle public ips
This commit is contained in:
parent
496c1a913d
commit
bbecb1a1cc
10 changed files with 458 additions and 52 deletions
298
Cargo.lock
generated
298
Cargo.lock
generated
|
@ -99,7 +99,7 @@ checksum = "6fd4c2eb837e894909fe13509f2351fa3990c114426e41255936800892ccbe26"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"Inflector",
|
"Inflector",
|
||||||
"async-graphql-parser",
|
"async-graphql-parser",
|
||||||
"darling",
|
"darling 0.12.4",
|
||||||
"proc-macro-crate",
|
"proc-macro-crate",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
|
@ -466,14 +466,38 @@ dependencies = [
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[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]]
|
[[package]]
|
||||||
name = "darling"
|
name = "darling"
|
||||||
version = "0.12.4"
|
version = "0.12.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "5f2c43f534ea4b0b049015d00269734195e6d3f0f6635cb692251aca6f9f8b3c"
|
checksum = "5f2c43f534ea4b0b049015d00269734195e6d3f0f6635cb692251aca6f9f8b3c"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"darling_core",
|
"darling_core 0.12.4",
|
||||||
"darling_macro",
|
"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]]
|
[[package]]
|
||||||
|
@ -486,7 +510,18 @@ dependencies = [
|
||||||
"ident_case",
|
"ident_case",
|
||||||
"proc-macro2",
|
"proc-macro2",
|
||||||
"quote",
|
"quote",
|
||||||
"strsim",
|
"strsim 0.10.0",
|
||||||
|
"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",
|
"syn",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -496,7 +531,49 @@ version = "0.12.4"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "29b5acf0dea37a7f66f7b25d2c5e93fd46f8f6968b1a5d7a3e02e97768afc95a"
|
checksum = "29b5acf0dea37a7f66f7b25d2c5e93fd46f8f6968b1a5d7a3e02e97768afc95a"
|
||||||
dependencies = [
|
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",
|
"quote",
|
||||||
"syn",
|
"syn",
|
||||||
]
|
]
|
||||||
|
@ -543,6 +620,18 @@ dependencies = [
|
||||||
"generic-array 0.14.4",
|
"generic-array 0.14.4",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[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]]
|
[[package]]
|
||||||
name = "downcast"
|
name = "downcast"
|
||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
|
@ -636,7 +725,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "duniter-bc-reader"
|
name = "duniter-bc-reader"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://git.duniter.org/nodes/rust/duniter-core#e75d971b7c9f7f67ac108eac6777940dabff49df"
|
source = "git+https://git.duniter.org/nodes/rust/duniter-core#65dd5cf572e4fffa0f4b6f70d04c3fe65ecffd69"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
"dubp",
|
"dubp",
|
||||||
|
@ -682,7 +771,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "duniter-conf"
|
name = "duniter-conf"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://git.duniter.org/nodes/rust/duniter-core#e75d971b7c9f7f67ac108eac6777940dabff49df"
|
source = "git+https://git.duniter.org/nodes/rust/duniter-core#65dd5cf572e4fffa0f4b6f70d04c3fe65ecffd69"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dubp",
|
"dubp",
|
||||||
"serde",
|
"serde",
|
||||||
|
@ -691,7 +780,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "duniter-core"
|
name = "duniter-core"
|
||||||
version = "1.8.1"
|
version = "1.8.1"
|
||||||
source = "git+https://git.duniter.org/nodes/rust/duniter-core#e75d971b7c9f7f67ac108eac6777940dabff49df"
|
source = "git+https://git.duniter.org/nodes/rust/duniter-core#65dd5cf572e4fffa0f4b6f70d04c3fe65ecffd69"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"duniter-bc-reader",
|
"duniter-bc-reader",
|
||||||
"duniter-conf",
|
"duniter-conf",
|
||||||
|
@ -704,7 +793,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "duniter-dbs"
|
name = "duniter-dbs"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://git.duniter.org/nodes/rust/duniter-core#e75d971b7c9f7f67ac108eac6777940dabff49df"
|
source = "git+https://git.duniter.org/nodes/rust/duniter-core#65dd5cf572e4fffa0f4b6f70d04c3fe65ecffd69"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"arrayvec",
|
"arrayvec",
|
||||||
"bincode",
|
"bincode",
|
||||||
|
@ -715,7 +804,7 @@ dependencies = [
|
||||||
"log",
|
"log",
|
||||||
"parking_lot",
|
"parking_lot",
|
||||||
"paste",
|
"paste",
|
||||||
"rand 0.7.3",
|
"rand 0.8.3",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"smallvec",
|
"smallvec",
|
||||||
|
@ -727,7 +816,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "duniter-dbs-write-ops"
|
name = "duniter-dbs-write-ops"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://git.duniter.org/nodes/rust/duniter-core#e75d971b7c9f7f67ac108eac6777940dabff49df"
|
source = "git+https://git.duniter.org/nodes/rust/duniter-core#65dd5cf572e4fffa0f4b6f70d04c3fe65ecffd69"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"chrono",
|
"chrono",
|
||||||
"dubp",
|
"dubp",
|
||||||
|
@ -742,7 +831,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "duniter-global"
|
name = "duniter-global"
|
||||||
version = "1.8.1"
|
version = "1.8.1"
|
||||||
source = "git+https://git.duniter.org/nodes/rust/duniter-core#e75d971b7c9f7f67ac108eac6777940dabff49df"
|
source = "git+https://git.duniter.org/nodes/rust/duniter-core#65dd5cf572e4fffa0f4b6f70d04c3fe65ecffd69"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"async-rwlock",
|
"async-rwlock",
|
||||||
"dubp",
|
"dubp",
|
||||||
|
@ -766,6 +855,7 @@ dependencies = [
|
||||||
"dubp",
|
"dubp",
|
||||||
"duniter-bca",
|
"duniter-bca",
|
||||||
"duniter-core",
|
"duniter-core",
|
||||||
|
"duniter-gva-conf",
|
||||||
"duniter-gva-db",
|
"duniter-gva-db",
|
||||||
"duniter-gva-dbs-reader",
|
"duniter-gva-dbs-reader",
|
||||||
"duniter-gva-gql",
|
"duniter-gva-gql",
|
||||||
|
@ -785,6 +875,13 @@ dependencies = [
|
||||||
"warp",
|
"warp",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "duniter-gva-conf"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "duniter-gva-db"
|
name = "duniter-gva-db"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
|
@ -860,7 +957,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "duniter-mempools"
|
name = "duniter-mempools"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://git.duniter.org/nodes/rust/duniter-core#e75d971b7c9f7f67ac108eac6777940dabff49df"
|
source = "git+https://git.duniter.org/nodes/rust/duniter-core#65dd5cf572e4fffa0f4b6f70d04c3fe65ecffd69"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"dubp",
|
"dubp",
|
||||||
"duniter-bc-reader",
|
"duniter-bc-reader",
|
||||||
|
@ -873,17 +970,23 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "duniter-module"
|
name = "duniter-module"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://git.duniter.org/nodes/rust/duniter-core#e75d971b7c9f7f67ac108eac6777940dabff49df"
|
source = "git+https://git.duniter.org/nodes/rust/duniter-core#65dd5cf572e4fffa0f4b6f70d04c3fe65ecffd69"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
"async-mutex",
|
||||||
"async-trait",
|
"async-trait",
|
||||||
"dubp",
|
"dubp",
|
||||||
"duniter-conf",
|
"duniter-conf",
|
||||||
"duniter-dbs",
|
"duniter-dbs",
|
||||||
"duniter-global",
|
"duniter-global",
|
||||||
"duniter-mempools",
|
"duniter-mempools",
|
||||||
|
"envy",
|
||||||
"fast-threadpool",
|
"fast-threadpool",
|
||||||
|
"futures-util",
|
||||||
"log",
|
"log",
|
||||||
|
"public-ip",
|
||||||
|
"serde",
|
||||||
|
"serde_json",
|
||||||
]
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
|
@ -933,6 +1036,33 @@ dependencies = [
|
||||||
"cfg-if 1.0.0",
|
"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 = "envy"
|
||||||
|
version = "0.4.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3f47e0157f2cb54f5ae1bd371b30a2ae4311e1c028f575cd4e81de7353215965"
|
||||||
|
dependencies = [
|
||||||
|
"serde",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "event-listener"
|
name = "event-listener"
|
||||||
version = "2.5.1"
|
version = "2.5.1"
|
||||||
|
@ -1216,6 +1346,15 @@ dependencies = [
|
||||||
"http",
|
"http",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "heck"
|
||||||
|
version = "0.3.2"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "87cbf45460356b7deeb5e3415b5563308c0a9b057c85e12b06ad551f98d0a6ac"
|
||||||
|
dependencies = [
|
||||||
|
"unicode-segmentation",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "hermit-abi"
|
name = "hermit-abi"
|
||||||
version = "0.1.18"
|
version = "0.1.18"
|
||||||
|
@ -1289,6 +1428,21 @@ dependencies = [
|
||||||
"want",
|
"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]]
|
[[package]]
|
||||||
name = "ident_case"
|
name = "ident_case"
|
||||||
version = "1.0.1"
|
version = "1.0.1"
|
||||||
|
@ -1334,6 +1488,12 @@ dependencies = [
|
||||||
"cfg-if 1.0.0",
|
"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]]
|
[[package]]
|
||||||
name = "itertools"
|
name = "itertools"
|
||||||
version = "0.9.0"
|
version = "0.9.0"
|
||||||
|
@ -1382,7 +1542,7 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "kv_typed"
|
name = "kv_typed"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
source = "git+https://git.duniter.org/nodes/rust/duniter-core#e75d971b7c9f7f67ac108eac6777940dabff49df"
|
source = "git+https://git.duniter.org/nodes/rust/duniter-core#65dd5cf572e4fffa0f4b6f70d04c3fe65ecffd69"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"byteorder",
|
"byteorder",
|
||||||
"cfg-if 0.1.10",
|
"cfg-if 0.1.10",
|
||||||
|
@ -1589,6 +1749,15 @@ dependencies = [
|
||||||
"getrandom 0.2.2",
|
"getrandom 0.2.2",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "nibble_vec"
|
||||||
|
version = "0.1.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "77a5d83df9f36fe23f0c3648c6bbb8b0298bb5f1939c8f2704431371f4b84d43"
|
||||||
|
dependencies = [
|
||||||
|
"smallvec",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "normalize-line-endings"
|
name = "normalize-line-endings"
|
||||||
version = "0.3.0"
|
version = "0.3.0"
|
||||||
|
@ -1850,6 +2019,26 @@ dependencies = [
|
||||||
"unicode-xid",
|
"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]]
|
[[package]]
|
||||||
name = "quick-error"
|
name = "quick-error"
|
||||||
version = "1.2.3"
|
version = "1.2.3"
|
||||||
|
@ -1865,6 +2054,16 @@ dependencies = [
|
||||||
"proc-macro2",
|
"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]]
|
[[package]]
|
||||||
name = "rand"
|
name = "rand"
|
||||||
version = "0.7.3"
|
version = "0.7.3"
|
||||||
|
@ -2209,6 +2408,12 @@ version = "1.1.0"
|
||||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "strsim"
|
||||||
|
version = "0.9.3"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "6446ced80d6c486436db5c078dde11a9f73d42b57fb273121e160b84f63d894c"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "strsim"
|
name = "strsim"
|
||||||
version = "0.10.0"
|
version = "0.10.0"
|
||||||
|
@ -2393,9 +2598,21 @@ dependencies = [
|
||||||
"cfg-if 1.0.0",
|
"cfg-if 1.0.0",
|
||||||
"log",
|
"log",
|
||||||
"pin-project-lite",
|
"pin-project-lite",
|
||||||
|
"tracing-attributes",
|
||||||
"tracing-core",
|
"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]]
|
[[package]]
|
||||||
name = "tracing-core"
|
name = "tracing-core"
|
||||||
version = "0.1.17"
|
version = "0.1.17"
|
||||||
|
@ -2411,6 +2628,51 @@ 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 = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41"
|
checksum = "a7f741b240f1a48843f9b8e0444fb55fb2a4ff67293b50a9179dfd5ea67f8d41"
|
||||||
|
|
||||||
|
[[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]]
|
[[package]]
|
||||||
name = "try-lock"
|
name = "try-lock"
|
||||||
version = "0.2.3"
|
version = "0.2.3"
|
||||||
|
@ -2500,6 +2762,12 @@ dependencies = [
|
||||||
"tinyvec",
|
"tinyvec",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "unicode-segmentation"
|
||||||
|
version = "1.7.1"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "bb0d2e7be6ae3a5fa87eed5fb451aff96f2573d2694942e40543ae0bbe19c796"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "unicode-xid"
|
name = "unicode-xid"
|
||||||
version = "0.2.1"
|
version = "0.2.1"
|
||||||
|
|
|
@ -16,6 +16,7 @@ bytes = "1.0"
|
||||||
dubp = { version = "0.53.1", features = ["duniter"] }
|
dubp = { version = "0.53.1", features = ["duniter"] }
|
||||||
duniter-bca = { path = "./bca" }
|
duniter-bca = { path = "./bca" }
|
||||||
duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core" }
|
duniter-core = { git = "https://git.duniter.org/nodes/rust/duniter-core" }
|
||||||
|
duniter-gva-conf = { path = "./conf" }
|
||||||
duniter-gva-db = { path = "./db" }
|
duniter-gva-db = { path = "./db" }
|
||||||
duniter-gva-dbs-reader = { path = "./dbs-reader" }
|
duniter-gva-dbs-reader = { path = "./dbs-reader" }
|
||||||
duniter-gva-indexer = { path = "./indexer" }
|
duniter-gva-indexer = { path = "./indexer" }
|
||||||
|
@ -41,8 +42,13 @@ unwrap = "1.2.1"
|
||||||
[workspace]
|
[workspace]
|
||||||
members = [
|
members = [
|
||||||
"bca",
|
"bca",
|
||||||
|
"conf",
|
||||||
"db",
|
"db",
|
||||||
"dbs-reader",
|
"dbs-reader",
|
||||||
"gql",
|
"gql",
|
||||||
"indexer",
|
"indexer",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[patch.crates-io]
|
||||||
|
#duniter-core = { path = "../duniter-core" }
|
||||||
|
|
||||||
|
|
18
conf/Cargo.toml
Normal file
18
conf/Cargo.toml
Normal file
|
@ -0,0 +1,18 @@
|
||||||
|
[package]
|
||||||
|
name = "duniter-gva-conf"
|
||||||
|
version = "0.1.0"
|
||||||
|
authors = ["elois <elois@duniter.org>"]
|
||||||
|
description = "Duniter GVA DB"
|
||||||
|
repository = "https://git.duniter.org/nodes/rust/modules/duniter-gva"
|
||||||
|
license = "AGPL-3.0"
|
||||||
|
edition = "2018"
|
||||||
|
|
||||||
|
[lib]
|
||||||
|
path = "src/lib.rs"
|
||||||
|
|
||||||
|
[dependencies]
|
||||||
|
serde = { version = "1.0.105", features = ["derive"] }
|
||||||
|
|
||||||
|
[dev-dependencies]
|
||||||
|
|
||||||
|
[features]
|
98
conf/src/lib.rs
Normal file
98
conf/src/lib.rs
Normal file
|
@ -0,0 +1,98 @@
|
||||||
|
// 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 serde::{Deserialize, Serialize};
|
||||||
|
use std::{
|
||||||
|
net::{IpAddr, Ipv4Addr, Ipv6Addr},
|
||||||
|
vec,
|
||||||
|
};
|
||||||
|
|
||||||
|
#[derive(Clone, Debug, Deserialize, Serialize)]
|
||||||
|
pub struct GvaConf {
|
||||||
|
pub enabled: bool,
|
||||||
|
#[serde(default = "ip4_default")]
|
||||||
|
pub ip4: Ipv4Addr,
|
||||||
|
pub ip6: Option<Ipv6Addr>,
|
||||||
|
#[serde(default = "port_default")]
|
||||||
|
pub port: u16,
|
||||||
|
#[serde(default = "path_default")]
|
||||||
|
pub path: String,
|
||||||
|
#[serde(default = "subscriptions_path_default")]
|
||||||
|
pub subscriptions_path: String,
|
||||||
|
pub remote_host: Option<String>,
|
||||||
|
pub remote_port: Option<u16>,
|
||||||
|
pub remote_path: Option<String>,
|
||||||
|
pub remote_subscriptions_path: Option<String>,
|
||||||
|
pub remote_tls: Option<bool>,
|
||||||
|
pub whitelist: Vec<IpAddr>,
|
||||||
|
}
|
||||||
|
|
||||||
|
const fn ip4_default() -> Ipv4Addr {
|
||||||
|
Ipv4Addr::UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
const fn ip6_default() -> Ipv6Addr {
|
||||||
|
Ipv6Addr::UNSPECIFIED
|
||||||
|
}
|
||||||
|
|
||||||
|
fn path_default() -> String {
|
||||||
|
"gva".to_owned()
|
||||||
|
}
|
||||||
|
|
||||||
|
const fn port_default() -> u16 {
|
||||||
|
30_901
|
||||||
|
}
|
||||||
|
|
||||||
|
fn subscriptions_path_default() -> String {
|
||||||
|
"gva-sub".to_owned()
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Default for GvaConf {
|
||||||
|
fn default() -> Self {
|
||||||
|
GvaConf {
|
||||||
|
enabled: false,
|
||||||
|
ip4: ip4_default(),
|
||||||
|
ip6: Some(ip6_default()),
|
||||||
|
port: port_default(),
|
||||||
|
path: path_default(),
|
||||||
|
subscriptions_path: subscriptions_path_default(),
|
||||||
|
remote_host: None,
|
||||||
|
remote_port: None,
|
||||||
|
remote_path: None,
|
||||||
|
remote_subscriptions_path: None,
|
||||||
|
remote_tls: None,
|
||||||
|
whitelist: vec![
|
||||||
|
IpAddr::V4(Ipv4Addr::LOCALHOST),
|
||||||
|
IpAddr::V6(Ipv6Addr::LOCALHOST),
|
||||||
|
],
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl GvaConf {
|
||||||
|
pub fn get_remote_port(&self) -> u16 {
|
||||||
|
self.remote_port.unwrap_or(self.port)
|
||||||
|
}
|
||||||
|
pub fn get_remote_path(&self) -> String {
|
||||||
|
self.remote_path
|
||||||
|
.clone()
|
||||||
|
.unwrap_or_else(|| self.path.clone())
|
||||||
|
}
|
||||||
|
pub fn get_remote_subscriptions_path(&self) -> String {
|
||||||
|
self.remote_subscriptions_path
|
||||||
|
.clone()
|
||||||
|
.unwrap_or_else(|| self.subscriptions_path.clone())
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,7 +3,7 @@ name = "duniter-gva-db"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
authors = ["elois <elois@duniter.org>"]
|
authors = ["elois <elois@duniter.org>"]
|
||||||
description = "Duniter GVA DB"
|
description = "Duniter GVA DB"
|
||||||
repository = "https://git.duniter.org/nodes/typescript/duniter"
|
repository = "https://git.duniter.org/nodes/rust/modules/duniter-gva"
|
||||||
license = "AGPL-3.0"
|
license = "AGPL-3.0"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@ name = "duniter-gva-dbs-reader"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
authors = ["elois <elois@duniter.org>"]
|
authors = ["elois <elois@duniter.org>"]
|
||||||
description = "Duniter GVA DBs read operations"
|
description = "Duniter GVA DBs read operations"
|
||||||
repository = "https://git.duniter.org/nodes/typescript/duniter"
|
repository = "https://git.duniter.org/nodes/rust/modules/duniter-gva"
|
||||||
keywords = ["dubp", "duniter", "blockchain", "database"]
|
keywords = ["dubp", "duniter", "blockchain", "database"]
|
||||||
license = "AGPL-3.0"
|
license = "AGPL-3.0"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
|
@ -3,7 +3,7 @@ name = "duniter-gva-indexer"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
authors = ["elois <elois@duniter.org>"]
|
authors = ["elois <elois@duniter.org>"]
|
||||||
description = "Duniter GVA DB writer"
|
description = "Duniter GVA DB writer"
|
||||||
repository = "https://git.duniter.org/nodes/typescript/duniter"
|
repository = "https://git.duniter.org/nodes/rust/modules/duniter-gva"
|
||||||
keywords = ["dubp", "duniter", "blockchain", "database"]
|
keywords = ["dubp", "duniter", "blockchain", "database"]
|
||||||
license = "AGPL-3.0"
|
license = "AGPL-3.0"
|
||||||
edition = "2018"
|
edition = "2018"
|
||||||
|
|
|
@ -77,7 +77,7 @@ impl From<&GvaConf> for AntiSpam {
|
||||||
ban: HashMap::with_capacity(10),
|
ban: HashMap::with_capacity(10),
|
||||||
ips_time: HashMap::with_capacity(10),
|
ips_time: HashMap::with_capacity(10),
|
||||||
})),
|
})),
|
||||||
whitelist: conf.get_whitelist().iter().copied().collect(),
|
whitelist: conf.whitelist.iter().copied().collect(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
78
src/lib.rs
78
src/lib.rs
|
@ -25,8 +25,6 @@
|
||||||
mod anti_spam;
|
mod anti_spam;
|
||||||
mod warp_;
|
mod warp_;
|
||||||
|
|
||||||
pub use duniter_core::conf::gva_conf::GvaConf;
|
|
||||||
|
|
||||||
use async_graphql::http::GraphQLPlaygroundConfig;
|
use async_graphql::http::GraphQLPlaygroundConfig;
|
||||||
use dubp::common::prelude::*;
|
use dubp::common::prelude::*;
|
||||||
use dubp::documents::transaction::TransactionDocumentV10;
|
use dubp::documents::transaction::TransactionDocumentV10;
|
||||||
|
@ -41,6 +39,7 @@ use duniter_core::dbs::prelude::*;
|
||||||
use duniter_core::dbs::{kv_typed::prelude::*, FileBackend};
|
use duniter_core::dbs::{kv_typed::prelude::*, FileBackend};
|
||||||
use duniter_core::global::AsyncAccessor;
|
use duniter_core::global::AsyncAccessor;
|
||||||
use duniter_core::mempools::Mempools;
|
use duniter_core::mempools::Mempools;
|
||||||
|
use duniter_gva_conf::GvaConf;
|
||||||
use duniter_gva_db::*;
|
use duniter_gva_db::*;
|
||||||
use duniter_gva_gql::{GvaSchema, QueryContext};
|
use duniter_gva_gql::{GvaSchema, QueryContext};
|
||||||
use duniter_gva_indexer::{get_gva_db_ro, get_gva_db_rw};
|
use duniter_gva_indexer::{get_gva_db_ro, get_gva_db_rw};
|
||||||
|
@ -63,10 +62,13 @@ pub struct GvaModule {
|
||||||
#[async_trait::async_trait]
|
#[async_trait::async_trait]
|
||||||
impl duniter_core::module::DuniterModule for GvaModule {
|
impl duniter_core::module::DuniterModule for GvaModule {
|
||||||
const INDEX_BLOCKS: bool = true;
|
const INDEX_BLOCKS: bool = true;
|
||||||
|
const MODULE_NAME: &'static str = "gva";
|
||||||
|
|
||||||
|
type Conf = GvaConf;
|
||||||
|
|
||||||
fn apply_block(
|
fn apply_block(
|
||||||
block: &DubpBlockV10,
|
block: &DubpBlockV10,
|
||||||
_conf: &duniter_core::conf::DuniterConf,
|
_conf: &duniter_core::conf::DuniterCoreConf,
|
||||||
profile_path_opt: Option<&Path>,
|
profile_path_opt: Option<&Path>,
|
||||||
) -> KvResult<()> {
|
) -> KvResult<()> {
|
||||||
let gva_db = get_gva_db_rw(profile_path_opt);
|
let gva_db = get_gva_db_rw(profile_path_opt);
|
||||||
|
@ -74,14 +76,15 @@ impl duniter_core::module::DuniterModule for GvaModule {
|
||||||
}
|
}
|
||||||
fn revert_block(
|
fn revert_block(
|
||||||
block: &DubpBlockV10,
|
block: &DubpBlockV10,
|
||||||
_conf: &duniter_core::conf::DuniterConf,
|
_conf: &duniter_core::conf::DuniterCoreConf,
|
||||||
profile_path_opt: Option<&Path>,
|
profile_path_opt: Option<&Path>,
|
||||||
) -> KvResult<()> {
|
) -> KvResult<()> {
|
||||||
let gva_db = get_gva_db_rw(profile_path_opt);
|
let gva_db = get_gva_db_rw(profile_path_opt);
|
||||||
duniter_gva_indexer::revert_block(&block, gva_db)
|
duniter_gva_indexer::revert_block(&block, gva_db)
|
||||||
}
|
}
|
||||||
fn init(
|
async fn init(
|
||||||
conf: &duniter_core::conf::DuniterConf,
|
conf: Self::Conf,
|
||||||
|
core_conf: &duniter_core::conf::DuniterCoreConf,
|
||||||
currency: &str,
|
currency: &str,
|
||||||
dbs_pool: &fast_threadpool::ThreadPoolAsyncHandler<SharedDbs<FileBackend>>,
|
dbs_pool: &fast_threadpool::ThreadPoolAsyncHandler<SharedDbs<FileBackend>>,
|
||||||
mempools: Mempools,
|
mempools: Mempools,
|
||||||
|
@ -89,30 +92,43 @@ impl duniter_core::module::DuniterModule for GvaModule {
|
||||||
profile_path_opt: Option<&Path>,
|
profile_path_opt: Option<&Path>,
|
||||||
software_version: &'static str,
|
software_version: &'static str,
|
||||||
) -> anyhow::Result<(Self, Vec<duniter_core::module::Endpoint>)> {
|
) -> anyhow::Result<(Self, Vec<duniter_core::module::Endpoint>)> {
|
||||||
let self_keypair = conf.self_key_pair.clone();
|
let self_keypair = core_conf.self_key_pair.clone();
|
||||||
let conf = conf.gva.clone();
|
|
||||||
let remote_port = conf.get_remote_port();
|
let remote_port = conf.get_remote_port();
|
||||||
let mut endpoints = Vec::new();
|
let mut endpoints = Vec::new();
|
||||||
if conf.enabled() {
|
if conf.enabled {
|
||||||
|
let remote_hosh = if let Some(remote_host) = conf.remote_host.clone() {
|
||||||
|
remote_host
|
||||||
|
} else {
|
||||||
|
let public_ips = duniter_core::module::public_ips::get_public_ips().await;
|
||||||
|
if let Some(ip6) = public_ips.public_ip6_opt {
|
||||||
|
format!("[{}]", ip6.to_string())
|
||||||
|
} else if let Some(ip4) = public_ips.public_ip4_opt {
|
||||||
|
ip4.to_string()
|
||||||
|
} else {
|
||||||
|
return Err(anyhow::Error::msg(
|
||||||
|
"Fail to found public IPs, please configure remote_host manually",
|
||||||
|
));
|
||||||
|
}
|
||||||
|
};
|
||||||
endpoints.push(format!(
|
endpoints.push(format!(
|
||||||
"GVA {}{} {} {}",
|
"GVA {}{} {} {}",
|
||||||
if remote_port == 443 || conf.get_remote_tls() {
|
if remote_port == 443 || conf.remote_tls.unwrap_or_default() {
|
||||||
"S "
|
"S "
|
||||||
} else {
|
} else {
|
||||||
""
|
""
|
||||||
},
|
},
|
||||||
conf.get_remote_host(),
|
remote_hosh,
|
||||||
remote_port,
|
remote_port,
|
||||||
conf.get_remote_path(),
|
conf.get_remote_path(),
|
||||||
));
|
));
|
||||||
endpoints.push(format!(
|
endpoints.push(format!(
|
||||||
"GVASUB {}{} {} {}",
|
"GVASUB {}{} {} {}",
|
||||||
if remote_port == 443 || conf.get_remote_tls() {
|
if remote_port == 443 || conf.remote_tls.unwrap_or_default() {
|
||||||
"S "
|
"S "
|
||||||
} else {
|
} else {
|
||||||
""
|
""
|
||||||
},
|
},
|
||||||
conf.get_remote_host(),
|
remote_hosh,
|
||||||
remote_port,
|
remote_port,
|
||||||
conf.get_remote_subscriptions_path(),
|
conf.get_remote_subscriptions_path(),
|
||||||
));
|
));
|
||||||
|
@ -147,7 +163,7 @@ impl duniter_core::module::DuniterModule for GvaModule {
|
||||||
} = self;
|
} = self;
|
||||||
|
|
||||||
if let DuniterMode::Start = mode {
|
if let DuniterMode::Start = mode {
|
||||||
if conf.enabled() {
|
if conf.enabled {
|
||||||
GvaModule::start_inner(
|
GvaModule::start_inner(
|
||||||
conf,
|
conf,
|
||||||
currency,
|
currency,
|
||||||
|
@ -281,16 +297,16 @@ impl GvaModule {
|
||||||
|
|
||||||
let conf_clone = conf.clone();
|
let conf_clone = conf.clone();
|
||||||
let graphql_playground =
|
let graphql_playground =
|
||||||
warp::path::path(conf.get_path())
|
warp::path::path(conf.path.clone())
|
||||||
.and(warp::get())
|
.and(warp::get())
|
||||||
.map(move || {
|
.map(move || {
|
||||||
HttpResponse::builder()
|
HttpResponse::builder()
|
||||||
.header("content-type", "text/html")
|
.header("content-type", "text/html")
|
||||||
.body(async_graphql::http::playground_source(
|
.body(async_graphql::http::playground_source(
|
||||||
GraphQLPlaygroundConfig::new(&format!("/{}", &conf_clone.get_path()))
|
GraphQLPlaygroundConfig::new(&format!("/{}", &conf_clone.path))
|
||||||
.subscription_endpoint(&format!(
|
.subscription_endpoint(&format!(
|
||||||
"/{}",
|
"/{}",
|
||||||
&conf_clone.get_subscriptions_path(),
|
&conf_clone.subscriptions_path,
|
||||||
)),
|
)),
|
||||||
))
|
))
|
||||||
});
|
});
|
||||||
|
@ -315,26 +331,24 @@ impl GvaModule {
|
||||||
// Start warp server
|
// Start warp server
|
||||||
log::info!(
|
log::info!(
|
||||||
"GVA server listen on http://{}:{}/{}",
|
"GVA server listen on http://{}:{}/{}",
|
||||||
conf.get_ip4(),
|
conf.ip4,
|
||||||
conf.get_port(),
|
conf.port,
|
||||||
&conf.get_path()
|
&conf.path
|
||||||
);
|
);
|
||||||
if let Some(ip6) = conf.get_ip6() {
|
if let Some(ip6) = conf.ip6 {
|
||||||
log::info!(
|
log::info!(
|
||||||
"GVA server listen on http://{}:{}/{}",
|
"GVA server listen on http://{}:{}/{}",
|
||||||
ip6,
|
ip6,
|
||||||
conf.get_port(),
|
conf.port,
|
||||||
&conf.get_path()
|
&conf.path
|
||||||
);
|
);
|
||||||
futures::future::join(
|
futures::future::join(
|
||||||
warp::serve(routes.clone()).run((conf.get_ip4(), conf.get_port())),
|
warp::serve(routes.clone()).run((conf.ip4, conf.port)),
|
||||||
warp::serve(routes).run((ip6, conf.get_port())),
|
warp::serve(routes).run((ip6, conf.port)),
|
||||||
)
|
)
|
||||||
.await;
|
.await;
|
||||||
} else {
|
} else {
|
||||||
warp::serve(routes)
|
warp::serve(routes).run((conf.ip4, conf.port)).await;
|
||||||
.run((conf.get_ip4(), conf.get_port()))
|
|
||||||
.await;
|
|
||||||
}
|
}
|
||||||
log::warn!("GVA server stopped");
|
log::warn!("GVA server stopped");
|
||||||
}
|
}
|
||||||
|
@ -343,7 +357,7 @@ impl GvaModule {
|
||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use duniter_core::conf::DuniterConf;
|
use duniter_core::conf::DuniterCoreConf;
|
||||||
use duniter_core::mempools::Mempools;
|
use duniter_core::mempools::Mempools;
|
||||||
use duniter_core::module::DuniterModule;
|
use duniter_core::module::DuniterModule;
|
||||||
use fast_threadpool::{ThreadPool, ThreadPoolConfig};
|
use fast_threadpool::{ThreadPool, ThreadPoolConfig};
|
||||||
|
@ -356,14 +370,16 @@ mod tests {
|
||||||
let threadpool = ThreadPool::start(ThreadPoolConfig::default(), dbs);
|
let threadpool = ThreadPool::start(ThreadPoolConfig::default(), dbs);
|
||||||
|
|
||||||
GvaModule::init(
|
GvaModule::init(
|
||||||
&DuniterConf::default(),
|
GvaConf::default(),
|
||||||
|
&DuniterCoreConf::default(),
|
||||||
"",
|
"",
|
||||||
&threadpool.into_async_handler(),
|
&threadpool.into_async_handler(),
|
||||||
Mempools::default(),
|
Mempools::default(),
|
||||||
duniter_core::conf::DuniterMode::Start,
|
duniter_core::conf::DuniterMode::Start,
|
||||||
None,
|
None,
|
||||||
"test",
|
"test",
|
||||||
)?
|
)
|
||||||
|
.await?
|
||||||
.0
|
.0
|
||||||
.start()
|
.start()
|
||||||
.await?;
|
.await?;
|
||||||
|
|
|
@ -149,7 +149,7 @@ pub(crate) fn graphql(
|
||||||
) -> impl warp::Filter<Extract = (impl warp::Reply,), Error = Rejection> + Clone {
|
) -> impl warp::Filter<Extract = (impl warp::Reply,), Error = Rejection> + Clone {
|
||||||
let anti_spam = AntiSpam::from(conf);
|
let anti_spam = AntiSpam::from(conf);
|
||||||
let opts = Arc::new(opts);
|
let opts = Arc::new(opts);
|
||||||
warp::path::path(conf.get_path())
|
warp::path::path(conf.path.clone())
|
||||||
.and(warp::method())
|
.and(warp::method())
|
||||||
.and(warp::query::raw().or(warp::any().map(String::new)).unify())
|
.and(warp::query::raw().or(warp::any().map(String::new)).unify())
|
||||||
.and(warp::addr::remote())
|
.and(warp::addr::remote())
|
||||||
|
@ -267,7 +267,7 @@ pub(crate) fn graphql_ws(
|
||||||
schema: GvaSchema,
|
schema: GvaSchema,
|
||||||
) -> impl warp::Filter<Extract = (impl warp::Reply,), Error = Rejection> + Clone {
|
) -> impl warp::Filter<Extract = (impl warp::Reply,), Error = Rejection> + Clone {
|
||||||
let anti_spam = AntiSpam::from(conf);
|
let anti_spam = AntiSpam::from(conf);
|
||||||
warp::path::path(conf.get_subscriptions_path())
|
warp::path::path(conf.subscriptions_path.clone())
|
||||||
.and(warp::addr::remote())
|
.and(warp::addr::remote())
|
||||||
.and(warp::header::optional::<IpAddr>("X-Real-IP"))
|
.and(warp::header::optional::<IpAddr>("X-Real-IP"))
|
||||||
.and(warp::ws())
|
.and(warp::ws())
|
||||||
|
|
Loading…
Add table
Reference in a new issue