4
4
5
5
#include < cassert>
6
6
#include < cctype>
7
- #include < charconv>
8
7
#include < cstring>
9
- #include < functional>
10
8
#include < string_view>
11
9
#include < unordered_map>
12
10
13
11
#include " ../string_util.h"
14
- #include " client_ip.h"
15
12
#include " ddwaf_obj.h"
16
13
#include " decode.h"
17
- #include " library.h"
18
14
#include " util.h"
19
15
20
16
extern " C" {
@@ -54,7 +50,8 @@ class ReqSerializer {
54
50
public:
55
51
explicit ReqSerializer (dnsec::DdwafMemres &memres) : memres_{memres} {}
56
52
57
- ddwaf_object *serialize (const ngx_http_request_t &request) {
53
+ ddwaf_object *serialize (const ngx_http_request_t &request,
54
+ const std::optional<std::string> &client_ip) {
58
55
dnsec::ddwaf_obj *root = memres_.allocate_objects <dnsec::ddwaf_obj>(1 );
59
56
dnsec::ddwaf_map_obj &root_map = root->make_map (6 , memres_);
60
57
@@ -63,7 +60,7 @@ class ReqSerializer {
63
60
set_request_method (request, root_map.at_unchecked (2 ));
64
61
set_request_headers_nocookies (request, root_map.at_unchecked (3 ));
65
62
set_request_cookie (request, root_map.at_unchecked (4 ));
66
- set_client_ip (request , root_map.at_unchecked (5 ));
63
+ set_client_ip (client_ip , root_map.at_unchecked (5 ));
67
64
68
65
return root;
69
66
}
@@ -312,11 +309,8 @@ class ReqSerializer {
312
309
set_value_from_iter (iter, slot);
313
310
}
314
311
315
- void set_client_ip (const ngx_http_request_t &request ,
312
+ void set_client_ip (const std::optional<std::string> &cl_ip ,
316
313
dnsec::ddwaf_obj &slot) {
317
- dnsec::ClientIp client_ip{dnsec::Library::custom_ip_header (), request};
318
- std::optional<std::string> cl_ip = client_ip.resolve ();
319
-
320
314
slot.set_key (kClientIp );
321
315
if (!cl_ip) {
322
316
slot.make_null ();
@@ -381,9 +375,10 @@ class ReqSerializer {
381
375
namespace datadog ::nginx::security {
382
376
383
377
ddwaf_object *collect_request_data (const ngx_http_request_t &request,
378
+ const std::optional<std::string> &client_ip,
384
379
DdwafMemres &memres) {
385
380
ReqSerializer rs{memres};
386
- return rs.serialize (request);
381
+ return rs.serialize (request, client_ip );
387
382
}
388
383
389
384
ddwaf_object *collect_response_data (const ngx_http_request_t &request,
0 commit comments