@@ -33,6 +33,8 @@ pub enum ClientKind {
33
33
Prysm ,
34
34
/// A lodestar node.
35
35
Lodestar ,
36
+ /// A Caplin node.
37
+ Caplin ,
36
38
/// An unknown client.
37
39
Unknown ,
38
40
}
@@ -88,6 +90,7 @@ impl std::fmt::Display for Client {
88
90
self . version, self . os_version
89
91
) ,
90
92
ClientKind :: Lodestar => write ! ( f, "Lodestar: version: {}" , self . version) ,
93
+ ClientKind :: Caplin => write ! ( f, "Caplin" ) ,
91
94
ClientKind :: Unknown => {
92
95
if let Some ( agent_string) = & self . agent_string {
93
96
write ! ( f, "Unknown: {}" , agent_string)
@@ -109,11 +112,11 @@ impl std::fmt::Display for ClientKind {
109
112
// kind and it's associated version and the OS kind.
110
113
fn client_from_agent_version ( agent_version : & str ) -> ( ClientKind , String , String ) {
111
114
let mut agent_split = agent_version. split ( '/' ) ;
115
+ let mut version = String :: from ( "unknown" ) ;
116
+ let mut os_version = String :: from ( "unknown" ) ;
112
117
match agent_split. next ( ) {
113
118
Some ( "Lighthouse" ) => {
114
119
let kind = ClientKind :: Lighthouse ;
115
- let mut version = String :: from ( "unknown" ) ;
116
- let mut os_version = version. clone ( ) ;
117
120
if let Some ( agent_version) = agent_split. next ( ) {
118
121
version = agent_version. into ( ) ;
119
122
if let Some ( agent_os_version) = agent_split. next ( ) {
@@ -124,8 +127,6 @@ fn client_from_agent_version(agent_version: &str) -> (ClientKind, String, String
124
127
}
125
128
Some ( "teku" ) => {
126
129
let kind = ClientKind :: Teku ;
127
- let mut version = String :: from ( "unknown" ) ;
128
- let mut os_version = version. clone ( ) ;
129
130
if agent_split. next ( ) . is_some ( ) {
130
131
if let Some ( agent_version) = agent_split. next ( ) {
131
132
version = agent_version. into ( ) ;
@@ -138,13 +139,10 @@ fn client_from_agent_version(agent_version: &str) -> (ClientKind, String, String
138
139
}
139
140
Some ( "github.com" ) => {
140
141
let kind = ClientKind :: Prysm ;
141
- let unknown = String :: from ( "unknown" ) ;
142
- ( kind, unknown. clone ( ) , unknown)
142
+ ( kind, version, os_version)
143
143
}
144
144
Some ( "Prysm" ) => {
145
145
let kind = ClientKind :: Prysm ;
146
- let mut version = String :: from ( "unknown" ) ;
147
- let mut os_version = version. clone ( ) ;
148
146
if agent_split. next ( ) . is_some ( ) {
149
147
if let Some ( agent_version) = agent_split. next ( ) {
150
148
version = agent_version. into ( ) ;
@@ -157,8 +155,6 @@ fn client_from_agent_version(agent_version: &str) -> (ClientKind, String, String
157
155
}
158
156
Some ( "nimbus" ) => {
159
157
let kind = ClientKind :: Nimbus ;
160
- let mut version = String :: from ( "unknown" ) ;
161
- let mut os_version = version. clone ( ) ;
162
158
if agent_split. next ( ) . is_some ( ) {
163
159
if let Some ( agent_version) = agent_split. next ( ) {
164
160
version = agent_version. into ( ) ;
@@ -171,8 +167,6 @@ fn client_from_agent_version(agent_version: &str) -> (ClientKind, String, String
171
167
}
172
168
Some ( "nim-libp2p" ) => {
173
169
let kind = ClientKind :: Nimbus ;
174
- let mut version = String :: from ( "unknown" ) ;
175
- let mut os_version = version. clone ( ) ;
176
170
if let Some ( agent_version) = agent_split. next ( ) {
177
171
version = agent_version. into ( ) ;
178
172
if let Some ( agent_os_version) = agent_split. next ( ) {
@@ -183,8 +177,6 @@ fn client_from_agent_version(agent_version: &str) -> (ClientKind, String, String
183
177
}
184
178
Some ( "js-libp2p" ) | Some ( "lodestar" ) => {
185
179
let kind = ClientKind :: Lodestar ;
186
- let mut version = String :: from ( "unknown" ) ;
187
- let mut os_version = version. clone ( ) ;
188
180
if let Some ( agent_version) = agent_split. next ( ) {
189
181
version = agent_version. into ( ) ;
190
182
if let Some ( agent_os_version) = agent_split. next ( ) {
@@ -193,6 +185,14 @@ fn client_from_agent_version(agent_version: &str) -> (ClientKind, String, String
193
185
}
194
186
( kind, version, os_version)
195
187
}
188
+ Some ( "erigon" ) => {
189
+ let client_kind = if let Some ( "caplin" ) = agent_split. next ( ) {
190
+ ClientKind :: Caplin
191
+ } else {
192
+ ClientKind :: Unknown
193
+ } ;
194
+ ( client_kind, version, os_version)
195
+ }
196
196
_ => {
197
197
let unknown = String :: from ( "unknown" ) ;
198
198
( ClientKind :: Unknown , unknown. clone ( ) , unknown)
0 commit comments