mirror of
https://github.com/pezkuwichain/pezkuwi-telemetry.git
synced 2026-11-13 10:47:05 +00:00
Move vulnerable dependencies to patched versions (#7)
* Move vulnerable dependencies to patched versions
Backend (Cargo.lock): openssl 0.10.55 -> 0.10.81, bytes 1.12.1, h2 0.3.27,
tokio 1.26 -> 1.47.1 (mio 1.x), url 2.3.1 -> 2.5.7 (idna 1.1), rand 0.8.8,
spin 0.9.9, time 0.3.55, ring 0.17.14.
Three alerts needed manifest changes:
- tokio-rustls 0.23 -> 0.26 (rustls 0.20 -> 0.23), which is what moves
ring off 0.16. The ring provider is selected explicitly instead of the
default aws-lc-rs, so the image build needs no cmake/C toolchain; roots
still come from webpki-roots (now 1.0). Checked against live hosts: a
valid certificate connects, an expired one and a name mismatch are
refused.
- maxminddb 0.23 -> 0.27: lookup() now returns a result that is decoded,
and the City model's fields are no longer Options. The existing
locate_random_ip test (12.5.56.25 -> "Gardena") passes.
- structopt (clap 2, which pulled atty) -> clap 4 derive in telemetry_core,
telemetry_shard and the soak tests; criterion 0.4 -> 0.5 for the same
reason. Both binaries' arguments were parsed before and after for the
docker-compose invocations and a set of other cases: identical results,
except that `--feed-timeout` given without a value is now an error where
structopt silently used the default. --denylist keeps taking every value
up to the next flag (num_args = 1..), as its help text describes.
Frontend: npm audit fix within ranges, and webpack-dev-server 4 -> 5.2.6
(no devServer options are configured, so nothing to migrate). Left:
sockjs -> uuid 8 inside webpack-dev-server 5; the fix is 6.0, which needs
Node 22 while CI runs 20, and it is the local dev server only.
Checked: backend cargo test (58 passed), clippy, fmt; frontend lint,
prettier, test and build.
* Reject an invalid byte size instead of panicking
ByteSize::from_str called expect("all ascii digits") on the numeric part,
so a value with no digits ("abc", "k") or one too large for usize
aborted the shard at startup with a panic instead of a usage error, and
the suffix multiplication could overflow silently in release builds.
Parse errors now return Err and the multiplication is checked.
The new test fails on the old code (panic) and passes on this one.
This commit is contained in:
1 parent
fe3dd7744a
commit
925b6c9bcd
12 files changed
+4874
-2694
No files matched your search
@@ -111,16 +111,10 @@ impl Locator {
|
||||
return cached_loc;
|
||||
}
|
||||
|
||||
let City { city, location, .. } = self.city.lookup(ip.into()).ok()?;
|
||||
let city = city
|
||||
.as_ref()?
|
||||
.names
|
||||
.as_ref()?
|
||||
.get("en")?
|
||||
.to_string()
|
||||
.into_boxed_str();
|
||||
let latitude = location.as_ref()?.latitude? as f32;
|
||||
let longitude = location?.longitude? as f32;
|
||||
let City { city, location, .. } = self.city.lookup(ip.into()).ok()?.decode().ok()??;
|
||||
let city = city.names.english?.to_string().into_boxed_str();
|
||||
let latitude = location.latitude? as f32;
|
||||
let longitude = location.longitude? as f32;
|
||||
|
||||
let location = Arc::new(NodeLocation {
|
||||
city,
|
||||
|
||||
@@ -26,13 +26,13 @@ use aggregator::{
|
||||
ToShardWebsocket,
|
||||
};
|
||||
use bincode::Options;
|
||||
use clap::Parser;
|
||||
use common::http_utils;
|
||||
use common::internal_messages;
|
||||
use common::ready_chunks_all::ReadyChunksAll;
|
||||
use futures::{SinkExt, StreamExt};
|
||||
use hyper::{Method, Response};
|
||||
use simple_logger::SimpleLogger;
|
||||
use structopt::StructOpt;
|
||||
|
||||
#[cfg(not(target_env = "msvc"))]
|
||||
use jemallocator::Jemalloc;
|
||||
@@ -48,49 +48,50 @@ const NAME: &str = "Substrate Telemetry Backend Core";
|
||||
const ABOUT: &str = "This is the Telemetry Backend Core that receives telemetry messages \
|
||||
from Substrate/Polkadot nodes and provides the data to a subscribed feed";
|
||||
|
||||
#[derive(StructOpt, Debug)]
|
||||
#[structopt(name = NAME, version = VERSION, author = AUTHORS, about = ABOUT)]
|
||||
#[derive(Parser, Debug)]
|
||||
#[command(name = NAME, version = VERSION, author = AUTHORS, about = ABOUT)]
|
||||
struct Opts {
|
||||
/// This is the socket address that Telemetry is listening to. This is restricted to
|
||||
/// localhost (127.0.0.1) by default and should be fine for most use cases. If
|
||||
/// you are using Telemetry in a container, you likely want to set this to '0.0.0.0:8000'
|
||||
#[structopt(short = "l", long = "listen", default_value = "127.0.0.1:8000")]
|
||||
#[arg(short = 'l', long = "listen", default_value = "127.0.0.1:8000")]
|
||||
socket: std::net::SocketAddr,
|
||||
/// The desired log level; one of 'error', 'warn', 'info', 'debug' or 'trace', where
|
||||
/// 'error' only logs errors and 'trace' logs everything.
|
||||
#[structopt(long = "log", default_value = "info")]
|
||||
#[arg(long = "log", default_value = "info")]
|
||||
log_level: log::LevelFilter,
|
||||
/// Space delimited list of the names of chains that are not allowed to connect to
|
||||
/// telemetry. Case sensitive.
|
||||
#[structopt(long, required = false)]
|
||||
// Takes every value up to the next flag (`--denylist a b c`), as structopt did.
|
||||
#[arg(long, required = false, num_args = 1..)]
|
||||
denylist: Vec<String>,
|
||||
/// If it takes longer than this number of seconds to send the current batch of messages
|
||||
/// to a feed, the feed connection will be closed.
|
||||
#[structopt(long, default_value = "10")]
|
||||
#[arg(long, default_value = "10")]
|
||||
feed_timeout: u64,
|
||||
/// Number of worker threads to spawn. If "0" is given, use the number of CPUs available
|
||||
/// on the machine. If no value is given, use an internal default that we have deemed sane.
|
||||
#[structopt(long)]
|
||||
#[arg(long)]
|
||||
worker_threads: Option<usize>,
|
||||
/// Each aggregator keeps track of the entire node state. Feed subscriptions are split across
|
||||
/// aggregators.
|
||||
#[structopt(long)]
|
||||
#[arg(long)]
|
||||
num_aggregators: Option<usize>,
|
||||
/// How big can the message queue for each aggregator grow before we start dropping non-essential
|
||||
/// messages in an attempt to let it reduce?
|
||||
#[structopt(long)]
|
||||
#[arg(long)]
|
||||
aggregator_queue_len: Option<usize>,
|
||||
/// How many nodes from third party chains are allowed to connect before we prevent connections from them.
|
||||
#[structopt(long, default_value = "1000")]
|
||||
#[arg(long, default_value = "1000")]
|
||||
max_third_party_nodes: usize,
|
||||
/// Flag to expose the node's details (IP address, SysInfo, HwBench) of all connected
|
||||
/// nodes to the feed subscribers.
|
||||
#[structopt(long)]
|
||||
#[arg(long)]
|
||||
pub expose_node_details: bool,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let opts = Opts::from_args();
|
||||
let opts = Opts::parse();
|
||||
|
||||
SimpleLogger::new()
|
||||
.with_level(opts.log_level)
|
||||
|
||||
Reference in new issue
Block a user