@@ -154,6 +154,10 @@ def setup_handler
154
154
155
155
print_status ( "Started #{ scheme . upcase } reverse handler on #{ listener_uri } " )
156
156
lookup_proxy_settings
157
+
158
+ if datastore [ 'IgnoreUnknownPayloads' ]
159
+ print_status ( "Handler is ignoring unknown payloads, there are #{ framework . uuid_db . keys . length } UUIDs whitelisted" )
160
+ end
157
161
end
158
162
159
163
#
@@ -229,11 +233,21 @@ def on_request(cli, req, obj)
229
233
conn_id = generate_uri_uuid ( URI_CHECKSUM_CONN , uuid )
230
234
end
231
235
236
+ # Validate known UUIDs for all requests if IgnoreUnknownPayloads is set
232
237
if datastore [ 'IgnoreUnknownPayloads' ] && ! framework . uuid_db [ uuid . puid_hex ]
233
- print_status ( "#{ cli . peerhost } :#{ cli . peerport } Ignoring request with unknown UUID #{ uuid . to_s } " )
238
+ print_status ( "#{ cli . peerhost } :#{ cli . peerport } (UUID: #{ uuid . to_s } ) Ignoring request with unknown UUID" )
234
239
info [ :mode ] = :unknown_uuid
235
240
end
236
241
242
+ # Validate known URLs for all session init requests if IgnoreUnknownPayloads is set
243
+ if datastore [ 'IgnoreUnknownPayloads' ] && info [ :mode ] . to_s =~ /^init_/
244
+ allowed_urls = framework . uuid_db [ uuid . puid_hex ] [ 'urls' ] || [ ]
245
+ unless allowed_urls . include? ( req . relative_resource )
246
+ print_status ( "#{ cli . peerhost } :#{ cli . peerport } (UUID: #{ uuid . to_s } ) Ignoring request with unknown UUID URL #{ req . relative_resource } " )
247
+ info [ :mode ] = :unknown_uuid_url
248
+ end
249
+ end
250
+
237
251
self . pending_connections += 1
238
252
239
253
# Process the requested resource.
@@ -374,7 +388,9 @@ def on_request(cli, req, obj)
374
388
} )
375
389
376
390
else
377
- print_status ( "#{ cli . peerhost } :#{ cli . peerport } Unknown request to #{ req . relative_resource } #{ req . inspect } ..." )
391
+ unless [ :unknown_uuid , :unknown_uuid_url ] . include? ( info [ :mode ] )
392
+ print_status ( "#{ cli . peerhost } :#{ cli . peerport } Unknown request to #{ req . relative_resource } with UA #{ req . headers [ 'User-Agent' ] } ..." )
393
+ end
378
394
resp . code = 200
379
395
resp . message = "OK"
380
396
resp . body = datastore [ 'HttpUnknownRequestResponse' ] . to_s
0 commit comments