diff --git a/pkg/common/parse_client.go b/pkg/common/parse_client.go index 8d85235..6fa47d6 100644 --- a/pkg/common/parse_client.go +++ b/pkg/common/parse_client.go @@ -530,6 +530,11 @@ func handleLen5(parts []string) (*Client, error) { var arch Arch userData := Unknown + if parts[0] == "nimbus-eth1" { + versionStr = parts[1] + os, arch, _ = parseOSArch(parts[2]) + lang = "nim" + } else // handle geth/v1.2.11-e3acd735-20231031/linux-amd64/go1.20.5/{d+} if strings.TrimFunc(parts[4], unicode.IsDigit) == "" { versionStr = parts[1] @@ -650,7 +655,7 @@ func ParseClientID(clientName *string) *Client { return nil } - if strings.HasPrefix(name, "nimbus-eth1") { + if strings.HasPrefix(name, "nimbus-eth1") && !strings.Contains(name, "/") { client, err := handleNimbus(name) if err != nil { slog.Error("parse nimbus failed", "err", err, "name", name) diff --git a/pkg/common/parse_client_test.go b/pkg/common/parse_client_test.go index 4c91f8a..bc0ca2f 100644 --- a/pkg/common/parse_client_test.go +++ b/pkg/common/parse_client_test.go @@ -28,6 +28,19 @@ func TestParseClientID(t *testing.T) { ci string client *Client }{ + { + name: "numbus slash 5 parts", + ci: "nimbus-eth1/v0.1.0-94198bcf/linux-amd64/Nim-2.0.10/nimvm", + client: &Client{ + Name: "nimbus-eth1", + UserData: Unknown, + Version: "v0.1.0", + Build: "94198bcf", + OS: OSLinux, + Arch: ArchAMD64, + Language: "nim", + }, + }, { name: "nimbus 6 parts", ci: "nimbus-eth1 v0.1.0 [linux: amd64, nimvm, c0d52b]",