From 4121cb4c666c47624f82ae69f9023e2ecd1f6d7a Mon Sep 17 00:00:00 2001 From: Martin Holst Swende Date: Thu, 28 Nov 2024 09:38:30 +0100 Subject: [PATCH] cmd/geth: fix flawed configuration sanity-check --- cmd/geth/config.go | 21 +++++++++++++++++++++ cmd/utils/flags.go | 13 +------------ 2 files changed, 22 insertions(+), 12 deletions(-) diff --git a/cmd/geth/config.go b/cmd/geth/config.go index e1dc0fda31..60810975b8 100644 --- a/cmd/geth/config.go +++ b/cmd/geth/config.go @@ -330,6 +330,27 @@ func applyMetricConfig(ctx *cli.Context, cfg *gethConfig) { if ctx.IsSet(utils.MetricsInfluxDBOrganizationFlag.Name) { cfg.Metrics.InfluxDBOrganization = ctx.String(utils.MetricsInfluxDBOrganizationFlag.Name) } + // Sanity-check the commandline flags. It is fine if some unused fields is part + // of the toml-config, but we expect the commandline to only contain relevant + // arguments, otherwise it indicates an error. + var ( + enableExport = ctx.Bool(utils.MetricsEnableInfluxDBFlag.Name) + enableExportV2 = ctx.Bool(utils.MetricsEnableInfluxDBV2Flag.Name) + ) + if enableExport || enableExportV2 { + v1FlagIsSet := ctx.IsSet(utils.MetricsInfluxDBUsernameFlag.Name) || + ctx.IsSet(utils.MetricsInfluxDBPasswordFlag.Name) + + v2FlagIsSet := ctx.IsSet(utils.MetricsInfluxDBTokenFlag.Name) || + ctx.IsSet(utils.MetricsInfluxDBOrganizationFlag.Name) || + ctx.IsSet(utils.MetricsInfluxDBBucketFlag.Name) + + if enableExport && v2FlagIsSet { + utils.Fatalf("Flags --influxdb.metrics.organization, --influxdb.metrics.token, --influxdb.metrics.bucket are only available for influxdb-v2") + } else if enableExportV2 && v1FlagIsSet { + utils.Fatalf("Flags --influxdb.metrics.username, --influxdb.metrics.password are only available for influxdb-v1") + } + } } func setAccountManagerBackends(conf *node.Config, am *accounts.Manager, keydir string) error { diff --git a/cmd/utils/flags.go b/cmd/utils/flags.go index ec8ed678f5..f6aa5ce6c9 100644 --- a/cmd/utils/flags.go +++ b/cmd/utils/flags.go @@ -1979,20 +1979,9 @@ func SetupMetrics(cfg *metrics.Config) { enableExport = cfg.EnableInfluxDB enableExportV2 = cfg.EnableInfluxDBV2 ) - if enableExport && enableExportV2 { + if cfg.EnableInfluxDB && cfg.EnableInfluxDBV2 { Fatalf("Flags %v can't be used at the same time", strings.Join([]string{MetricsEnableInfluxDBFlag.Name, MetricsEnableInfluxDBV2Flag.Name}, ", ")) } - if enableExport || enableExportV2 { - v1FlagIsSet := cfg.InfluxDBUsername != "" || cfg.InfluxDBPassword != "" - v2FlagIsSet := cfg.InfluxDBToken != "" || cfg.InfluxDBOrganization != "" || cfg.InfluxDBBucket != "" - - if enableExport && v2FlagIsSet { - Fatalf("Flags --influxdb.metrics.organization, --influxdb.metrics.token, --influxdb.metrics.bucket are only available for influxdb-v2") - } else if enableExportV2 && v1FlagIsSet { - Fatalf("Flags --influxdb.metrics.username, --influxdb.metrics.password are only available for influxdb-v1") - } - } - var ( endpoint = cfg.InfluxDBEndpoint database = cfg.InfluxDBDatabase