@@ -65,20 +65,34 @@ def request(name, params = {})
65
65
end
66
66
end
67
67
68
+ def report_unused_attrs ( type , unused_attrs )
69
+ unused_attrs . each do | attr |
70
+ # $stderr.puts "#{type} request returned unknown parameter #{attr}"
71
+ end
72
+ end
73
+
68
74
def info
69
- Info . load request ( :info )
75
+ obj , unused_attrs = Info . load request ( :info )
76
+ report_unused_attrs ( 'info' , unused_attrs )
77
+ obj
70
78
end
71
79
72
80
def analyse ( params = { } )
73
- Host . load request ( :analyze , params )
81
+ obj , unused_attrs = Host . load request ( :analyze , params )
82
+ report_unused_attrs ( 'analyze' , unused_attrs )
83
+ obj
74
84
end
75
85
76
86
def get_endpoint_data ( params = { } )
77
- Endpoint . load request ( :get_endpoint_data , params )
87
+ obj , unused_attrs = Endpoint . load request ( :get_endpoint_data , params )
88
+ report_unused_attrs ( 'get_endpoint_data' , unused_attrs )
89
+ obj
78
90
end
79
91
80
92
def get_status_codes
81
- StatusCodes . load request ( :get_status_codes )
93
+ obj , unused_attrs = StatusCodes . load request ( :get_status_codes )
94
+ report_unused_attrs ( 'get_status_codes' , unused_attrs )
95
+ obj
82
96
end
83
97
end
84
98
@@ -142,18 +156,30 @@ def self.has_object_ref(name, klass)
142
156
143
157
def self . load ( attributes = { } )
144
158
obj = self . new
159
+ unused_attrs = [ ]
145
160
attributes . each do |name , value |
146
161
if @fields . include? ( name )
147
162
obj . instance_variable_set ( "@#{ name } " , value )
148
163
elsif @lists . key? ( name )
149
- obj . instance_variable_set ( "@#{ name } " , value . map { |v | @lists [ name ] . load ( v ) } ) unless value . nil?
164
+ unless value . nil?
165
+ var = value . map do |v |
166
+ val , ua = @lists [ name ] . load ( v )
167
+ unused_attrs . concat ua
168
+ val
169
+ end
170
+ obj . instance_variable_set ( "@#{ name } " , var )
171
+ end
150
172
elsif @refs . key? ( name )
151
- obj . instance_variable_set ( "@#{ name } " , @refs [ name ] . load ( value ) ) unless value . nil?
173
+ unless value . nil?
174
+ val , ua = @refs [ name ] . load ( value )
175
+ unused_attrs . concat ua
176
+ obj . instance_variable_set ( "@#{ name } " , val )
177
+ end
152
178
else
153
- fail ArgumentError , " #{ name } is not an attribute of object #{ self . name } "
179
+ unused_attrs << name
154
180
end
155
181
end
156
- obj
182
+ return obj , unused_attrs
157
183
end
158
184
159
185
def to_json ( opts = { } )
@@ -184,7 +210,10 @@ class Cert < ApiObject
184
210
:sgc? ,
185
211
:validationType ,
186
212
:issues ,
187
- :sct?
213
+ :sct? ,
214
+ :mustStaple ,
215
+ :sha1Hash ,
216
+ :pinSha256
188
217
189
218
def valid?
190
219
issues == 0
@@ -210,7 +239,9 @@ class ChainCert < ApiObject
210
239
:revocationStatus ,
211
240
:crlRevocationStatus ,
212
241
:ocspRevocationStatus ,
213
- :raw
242
+ :raw ,
243
+ :sha1Hash ,
244
+ :pinSha256
214
245
215
246
def valid?
216
247
issues == 0
@@ -273,7 +304,8 @@ class Info < ApiObject
273
304
:clientMaxAssessments ,
274
305
:maxAssessments ,
275
306
:currentAssessments ,
276
- :messages
307
+ :messages ,
308
+ :newAssessmentCoolOff
277
309
end
278
310
279
311
class SimClient < ApiObject
@@ -289,7 +321,8 @@ class Simulation < ApiObject
289
321
has_fields :errorCode ,
290
322
:attempts ,
291
323
:protocolId ,
292
- :suiteId
324
+ :suiteId ,
325
+ :kxInfo
293
326
294
327
def success?
295
328
error_code == 0
@@ -376,7 +409,23 @@ class EndpointDetails < ApiObject
376
409
:poodleTls ,
377
410
:fallbackScsv? ,
378
411
:freak? ,
379
- :hasSct
412
+ :hasSct ,
413
+ :stsStatus ,
414
+ :stsPreload ,
415
+ :supportsAlpn ,
416
+ :rc4Only ,
417
+ :protocolIntolerance ,
418
+ :miscIntolerance ,
419
+ :openSSLLuckyMinus20 ,
420
+ :logjam ,
421
+ :chaCha20Preference ,
422
+ :hstsPolicy ,
423
+ :hstsPreloads ,
424
+ :hpkpPolicy ,
425
+ :hpkpRoPolicy ,
426
+ :drownHosts ,
427
+ :drownErrors ,
428
+ :drownVulnerable
380
429
end
381
430
382
431
class Endpoint < ApiObject
@@ -688,7 +737,7 @@ def output_common_info(r)
688
737
print_status "Host: #{ r . host } "
689
738
690
739
r . endpoints . each do |e |
691
- print_status "\t #{ e . ip_address } \n "
740
+ print_status "\t #{ e . ip_address } "
692
741
end
693
742
end
694
743
@@ -799,8 +848,6 @@ def run
799
848
r = api . analyse ( host : hostname , all : 'done' )
800
849
end
801
850
802
- rescue
803
- print_error "Invalid parameters"
804
851
rescue RequestRateTooHigh
805
852
print_error "Request rate is too high, please slow down"
806
853
rescue InternalError
@@ -809,5 +856,7 @@ def run
809
856
print_error "Service is not available, sleep 15 minutes"
810
857
rescue ServiceOverloaded
811
858
print_error "Service is overloaded, sleep 30 minutes"
859
+ rescue
860
+ print_error "Invalid parameters"
812
861
end
813
862
end
0 commit comments