rpc servers: update jsonrpsee to fix host filtering + WS server-side pings (#11661)

* bump jsonrpsee to fix #11480

In addition it adds WebSocket server-side pings which is configured to
send out pings periodically every 30 seconds.

* use released crates.io version

* Update Cargo.toml
This commit is contained in:
Niklas Adolfsson
2022-06-14 22:43:25 +02:00
committed by GitHub
parent f9ea8b8d0f
commit bed163dceb
22 changed files with 69 additions and 63 deletions
+35 -33
View File
@@ -3160,9 +3160,9 @@ dependencies = [
[[package]]
name = "jsonrpsee"
version = "0.13.0"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eae63f7fdeb51700b35e9b28bf92e8d233951590968c186ed79510b6c12fa3d9"
checksum = "11e017217fcd18da0a25296d3693153dd19c8a6aadab330b3595285d075385d1"
dependencies = [
"jsonrpsee-core",
"jsonrpsee-http-server",
@@ -3175,9 +3175,9 @@ dependencies = [
[[package]]
name = "jsonrpsee-client-transport"
version = "0.13.0"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "32feb1f2f0b5ce37a03b96a988a6dadccc3f529a2f930356bac93f13c09cf385"
checksum = "ce395539a14d3ad4ec1256fde105abd36a2da25d578a291cabe98f45adfdb111"
dependencies = [
"futures-util",
"http",
@@ -3196,9 +3196,9 @@ dependencies = [
[[package]]
name = "jsonrpsee-core"
version = "0.13.0"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "31e6b13067b615dd050ced7c19517a52cde490eee2c754d5447ce513f2275f7d"
checksum = "16efcd4477de857d4a2195a45769b2fe9ebb54f3ef5a4221d3b014a4fe33ec0b"
dependencies = [
"anyhow",
"arrayvec 0.7.1",
@@ -3208,8 +3208,10 @@ dependencies = [
"futures-channel",
"futures-timer",
"futures-util",
"globset",
"hyper",
"jsonrpsee-types",
"lazy_static",
"parking_lot 0.12.0",
"rand 0.8.4",
"rustc-hash",
@@ -3219,32 +3221,31 @@ dependencies = [
"thiserror",
"tokio",
"tracing",
]
[[package]]
name = "jsonrpsee-http-server"
version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b34f1090bdc8f7f14ad8811fc84501867c23a9046ce79d49c0cd929a256c501e"
dependencies = [
"futures-channel",
"futures-util",
"globset",
"hyper",
"jsonrpsee-core",
"jsonrpsee-types",
"lazy_static",
"serde_json",
"tokio",
"tracing",
"unicase",
]
[[package]]
name = "jsonrpsee-proc-macros"
version = "0.13.0"
name = "jsonrpsee-http-server"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5d8dc7a8b629e371cd5ca9d128883763ae00c5b63158ace4a6a61345726a21b7"
checksum = "bdd69efeb3ce2cba767f126872f4eeb4624038a29098e75d77608b2b4345ad03"
dependencies = [
"futures-channel",
"futures-util",
"hyper",
"jsonrpsee-core",
"jsonrpsee-types",
"serde",
"serde_json",
"tokio",
"tracing",
]
[[package]]
name = "jsonrpsee-proc-macros"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "874cf3f6a027cebf36cae767feca9aa2e8a8f799880e49eb5540819fcbd8eada"
dependencies = [
"proc-macro-crate",
"proc-macro2",
@@ -3254,9 +3255,9 @@ dependencies = [
[[package]]
name = "jsonrpsee-types"
version = "0.13.0"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "44f1835f131e77cd766b4dcb025873944cb1e479cd5debb639e2dc11f90df24a"
checksum = "3bcf76cd316f5d3ad48138085af1f45e2c58c98e02f0779783dbb034d43f7c86"
dependencies = [
"anyhow",
"beef",
@@ -3268,9 +3269,9 @@ dependencies = [
[[package]]
name = "jsonrpsee-ws-client"
version = "0.13.0"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9d75df866743c9733b3e2f5421e56df2f5b4630f7de39f82c44eaab350604926"
checksum = "ee043cb5dd0d51d3eb93432e998d5bae797691a7b10ec4a325e036bcdb48c48a"
dependencies = [
"jsonrpsee-client-transport",
"jsonrpsee-core",
@@ -3279,9 +3280,9 @@ dependencies = [
[[package]]
name = "jsonrpsee-ws-server"
version = "0.13.0"
version = "0.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "099971913436e7f6b1bc80180d4e5f014ec944660636da45d2f372c23d6308c3"
checksum = "2bd2e4d266774a671f8def3794255b28eddd09b18d76e0b913fa439f34588c0a"
dependencies = [
"futures-channel",
"futures-util",
@@ -3290,6 +3291,7 @@ dependencies = [
"serde_json",
"soketto",
"tokio",
"tokio-stream",
"tokio-util 0.7.1",
"tracing",
]
+1 -1
View File
@@ -42,7 +42,7 @@ frame-system = { version = "4.0.0-dev", path = "../../../frame/system" }
pallet-transaction-payment = { version = "4.0.0-dev", default-features = false, path = "../../../frame/transaction-payment" }
# These dependencies are used for the node template's RPCs
jsonrpsee = { version = "0.13.0", features = ["server"] }
jsonrpsee = { version = "0.14.0", features = ["server"] }
sc-rpc = { version = "4.0.0-dev", path = "../../../client/rpc" }
sp-api = { version = "4.0.0-dev", path = "../../../primitives/api" }
sc-rpc-api = { version = "0.10.0-dev", path = "../../../client/rpc-api" }
+1 -1
View File
@@ -37,7 +37,7 @@ crate-type = ["cdylib", "rlib"]
clap = { version = "3.1.18", features = ["derive"], optional = true }
codec = { package = "parity-scale-codec", version = "3.0.0" }
serde = { version = "1.0.136", features = ["derive"] }
jsonrpsee = { version = "0.13.0", features = ["server"] }
jsonrpsee = { version = "0.14.0", features = ["server"] }
futures = "0.3.21"
hex-literal = "0.3.4"
log = "0.4.17"
+1 -1
View File
@@ -11,7 +11,7 @@ repository = "https://github.com/paritytech/substrate/"
targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
jsonrpsee = { version = "0.13.0", features = ["server"] }
jsonrpsee = { version = "0.14.0", features = ["server"] }
node-primitives = { version = "2.0.0", path = "../primitives" }
pallet-contracts-rpc = { version = "4.0.0-dev", path = "../../../frame/contracts/rpc/" }
pallet-mmr-rpc = { version = "3.0.0", path = "../../../frame/merkle-mountain-range/rpc/" }
+1 -1
View File
@@ -11,7 +11,7 @@ homepage = "https://substrate.io"
[dependencies]
codec = { package = "parity-scale-codec", version = "3.0.0", features = ["derive"] }
futures = "0.3.21"
jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
jsonrpsee = { version = "0.14.0", features = ["server", "macros"] }
log = "0.4"
parking_lot = "0.12.0"
serde = { version = "1.0.136", features = ["derive"] }
@@ -13,7 +13,7 @@ readme = "README.md"
targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
jsonrpsee = { version = "0.14.0", features = ["server", "macros"] }
futures = "0.3.21"
serde = { version = "1.0.136", features = ["derive"] }
thiserror = "1.0"
@@ -13,7 +13,7 @@ readme = "README.md"
targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
jsonrpsee = { version = "0.14.0", features = ["server", "macros"] }
assert_matches = "1.3.0"
async-trait = "0.1.50"
codec = { package = "parity-scale-codec", version = "3.0.0" }
@@ -12,7 +12,7 @@ homepage = "https://substrate.io"
[dependencies]
finality-grandpa = { version = "0.16.0", features = ["derive-codec"] }
futures = "0.3.16"
jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
jsonrpsee = { version = "0.14.0", features = ["server", "macros"] }
log = "0.4.8"
parity-scale-codec = { version = "3.0.0", features = ["derive"] }
serde = { version = "1.0.105", features = ["derive"] }
+1 -1
View File
@@ -28,4 +28,4 @@ sp-rpc = { version = "6.0.0", path = "../../primitives/rpc" }
sp-runtime = { version = "6.0.0", path = "../../primitives/runtime" }
sp-tracing = { version = "5.0.0", path = "../../primitives/tracing" }
sp-version = { version = "5.0.0", path = "../../primitives/version" }
jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
jsonrpsee = { version = "0.14.0", features = ["server", "macros"] }
+1 -1
View File
@@ -14,7 +14,7 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
futures = "0.3.21"
jsonrpsee = { version = "0.13.0", features = ["server"] }
jsonrpsee = { version = "0.14.0", features = ["server"] }
log = "0.4.17"
serde_json = "1.0.79"
tokio = { version = "1.17.0", features = ["parking_lot"] }
+13 -9
View File
@@ -103,7 +103,7 @@ pub async fn start_http<M: Send + Sync + 'static>(
.max_request_body_size(max_payload_in as u32)
.max_response_body_size(max_payload_out as u32)
.set_access_control(acl.build())
.health_api("/health", "system_health")
.health_api("/health", "system_health")?
.custom_tokio_runtime(rt);
let rpc_api = build_rpc_api(rpc_api);
@@ -141,12 +141,23 @@ pub async fn start_ws<M: Send + Sync + 'static>(
let (max_payload_in, max_payload_out, max_connections, max_subs_per_conn) =
ws_config.deconstruct();
let mut acl = AccessControlBuilder::new();
if let Some(cors) = cors {
// Whitelist listening address.
// NOTE: set_allowed_hosts will whitelist both ports but only one will used.
acl = acl.set_allowed_hosts(format_allowed_hosts(&addrs[..]))?;
acl = acl.set_allowed_origins(cors)?;
};
let mut builder = WsServerBuilder::new()
.max_request_body_size(max_payload_in)
.max_response_body_size(max_payload_out)
.max_connections(max_connections)
.max_subscriptions_per_connection(max_subs_per_conn)
.custom_tokio_runtime(rt);
.ping_interval(std::time::Duration::from_secs(30))
.custom_tokio_runtime(rt)
.set_access_control(acl.build());
if let Some(provider) = id_provider {
builder = builder.set_id_provider(provider);
@@ -154,13 +165,6 @@ pub async fn start_ws<M: Send + Sync + 'static>(
builder = builder.set_id_provider(RandomStringIdProvider::new(16));
};
if let Some(cors) = cors {
// Whitelist listening address.
// NOTE: set_allowed_hosts will whitelist both ports but only one will used.
builder = builder.set_allowed_hosts(format_allowed_hosts(&addrs[..]))?;
builder = builder.set_allowed_origins(cors)?;
}
let rpc_api = build_rpc_api(rpc_api);
let (handle, addr) = if let Some(metrics) = metrics {
let middleware = RpcMiddleware::new(metrics, "ws".into());
+1 -1
View File
@@ -16,7 +16,7 @@ targets = ["x86_64-unknown-linux-gnu"]
codec = { package = "parity-scale-codec", version = "3.0.0" }
futures = "0.3.21"
hash-db = { version = "0.15.2", default-features = false }
jsonrpsee = { version = "0.13.0", features = ["server"] }
jsonrpsee = { version = "0.14.0", features = ["server"] }
lazy_static = { version = "1.4.0", optional = true }
log = "0.4.17"
parking_lot = "0.12.0"
+1 -1
View File
@@ -22,7 +22,7 @@ wasmtime = ["sc-executor/wasmtime"]
test-helpers = []
[dependencies]
jsonrpsee = { version = "0.13.0", features = ["server"] }
jsonrpsee = { version = "0.14.0", features = ["server"] }
thiserror = "1.0.30"
futures = "0.3.21"
rand = "0.7.3"
+1 -1
View File
@@ -14,7 +14,7 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
codec = { package = "parity-scale-codec", version = "3.0.0" }
jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
jsonrpsee = { version = "0.14.0", features = ["server", "macros"] }
serde = { version = "1.0.136", features = ["derive"] }
serde_json = "1.0.79"
thiserror = "1.0.30"
+1 -1
View File
@@ -14,7 +14,7 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
codec = { package = "parity-scale-codec", version = "3.0.0" }
jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
jsonrpsee = { version = "0.14.0", features = ["server", "macros"] }
serde = { version = "1", features = ["derive"] }
# Substrate Dependencies
@@ -14,7 +14,7 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
codec = { package = "parity-scale-codec", version = "3.0.0" }
jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
jsonrpsee = { version = "0.14.0", features = ["server", "macros"] }
serde = { version = "1.0.136", features = ["derive"] }
sp-api = { version = "4.0.0-dev", path = "../../../primitives/api" }
sp-blockchain = { version = "4.0.0-dev", path = "../../../primitives/blockchain" }
@@ -14,7 +14,7 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
codec = { package = "parity-scale-codec", version = "3.0.0" }
jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
jsonrpsee = { version = "0.14.0", features = ["server", "macros"] }
pallet-transaction-payment-rpc-runtime-api = { version = "4.0.0-dev", path = "./runtime-api" }
sp-api = { version = "4.0.0-dev", path = "../../../primitives/api" }
sp-blockchain = { version = "4.0.0-dev", path = "../../../primitives/blockchain" }
@@ -15,7 +15,7 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
codec = { package = "parity-scale-codec", version = "3.0.0" }
env_logger = "0.9"
jsonrpsee = { version = "0.13.0", features = ["ws-client", "macros"] }
jsonrpsee = { version = "0.14.0", features = ["ws-client", "macros"] }
log = "0.4.17"
serde = "1.0.136"
serde_json = "1.0"
@@ -25,7 +25,7 @@ sp-state-machine = { path = "../../../../primitives/state-machine" }
sp-trie = { path = "../../../../primitives/trie" }
trie-db = { version = "0.23.1" }
jsonrpsee = { version = "0.13.0", features = ["server", "macros"] }
jsonrpsee = { version = "0.14.0", features = ["server", "macros"] }
# Substrate Dependencies
sc-client-api = { version = "4.0.0-dev", path = "../../../../client/api" }
+2 -2
View File
@@ -17,7 +17,7 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
codec = { package = "parity-scale-codec", version = "3.0.0" }
futures = "0.3.21"
jsonrpsee = { version = "0.13.0", features = ["jsonrpsee-types"] }
jsonrpsee = { version = "0.14.0", features = ["jsonrpsee-types"] }
serde = "1"
frame-support = { version = "4.0.0-dev", path = "../../../../frame/support" }
sc-rpc-api = { version = "0.10.0-dev", path = "../../../../client/rpc-api" }
@@ -25,6 +25,6 @@ sp-storage = { version = "6.0.0", path = "../../../../primitives/storage" }
[dev-dependencies]
scale-info = "2.1.1"
jsonrpsee = { version = "0.13.0", features = ["ws-client", "jsonrpsee-types"] }
jsonrpsee = { version = "0.14.0", features = ["ws-client", "jsonrpsee-types"] }
tokio = "1.17.0"
frame-system = { version = "4.0.0-dev", path = "../../../../frame/system" }
+1 -1
View File
@@ -15,7 +15,7 @@ targets = ["x86_64-unknown-linux-gnu"]
[dependencies]
serde_json = "1"
codec = { package = "parity-scale-codec", version = "3.0.0" }
jsonrpsee = { version = "0.13.0", features = ["server"] }
jsonrpsee = { version = "0.14.0", features = ["server"] }
futures = "0.3.21"
log = "0.4.17"
frame-system-rpc-runtime-api = { version = "4.0.0-dev", path = "../../../../frame/system/rpc/runtime-api" }
@@ -19,7 +19,7 @@ parity-scale-codec = "3.0.0"
serde = "1.0.136"
zstd = { version = "0.10.0", default-features = false }
remote-externalities = { version = "0.10.0-dev", path = "../../remote-externalities" }
jsonrpsee = { version = "0.13.0", default-features = false, features = ["ws-client"] }
jsonrpsee = { version = "0.14.0", default-features = false, features = ["ws-client"] }
sc-chain-spec = { version = "4.0.0-dev", path = "../../../../client/chain-spec" }
sc-cli = { version = "0.10.0-dev", path = "../../../../client/cli" }
sc-executor = { version = "0.10.0-dev", path = "../../../../client/executor" }