You are here

datadome_integration_recv.html.twig in Fastly 8.3

# Configure the regular expression below to match URLs that
# should be checked by DataDome
if (fastly.ff.visits_this_service == 0 && req.restarts == 0 && !(req.url.path ~ "{{ datadome_exclusion_ext }}" && (req.method == "GET" || req.method == "HEAD"))) {

set req.backend = datadome;
# Configure the string below to include your DataDome API key
set req.http.x-datadome-params:method = urlencode(req.method);
set req.http.x-datadome-params:postparamlen = urlencode(req.http.content-length);
set req.method = "GET";
{% if logging_endpoint %}
## Debug DataDome
log {"syslog "} req.service_id {" {{ logging_endpoint }} :: "}
" timestamp=%22" now
"%22 client_ip=" req.http.Fastly-Client-IP
" request=" req.method
" host=" req.http.host
" url=%22" cstr_escape(req.url)
"%22 request_referer=%22" cstr_escape(req.http.Referer)
"%22 request_user_agent=%22" cstr_escape(req.http.User-Agent)
"%22 request_accept_language=%22" cstr_escape(req.http.Accept-Language)
"%22 request_accept_charset=%22" cstr_escape(req.http.Accept-Charset)
"%22 contentLength=" req.http.Content-Length
" restarts=" req.restarts
" DataDomeDebug=" "To_DataDome"
" fastlyFF=" fastly.ff.visits_this_service;
##
{% endif %}
return (pass);
} else {
if (req.http.x-datadome-params:method) {
set req.method = urldecode(req.http.x-datadome-params:method);
# After a restart, clustering is disabled. This re-enables it.
set req.http.fastly-force-shield = "1";
}
unset req.http.x-datadome-params;
{% if logging_endpoint %}
## Debug DataDome
log {"syslog "} req.service_id {" {{ logging_endpoint }} :: "}
" timestamp=%22" now
"%22 client_ip=" req.http.Fastly-Client-IP
" request=" req.method
" host=" req.http.host
" url=%22" cstr_escape(req.url)
"%22 request_referer=%22" cstr_escape(req.http.Referer)
"%22 request_user_agent=%22" cstr_escape(req.http.User-Agent)
"%22 request_accept_language=%22" cstr_escape(req.http.Accept-Language)
"%22 request_accept_charset=%22" cstr_escape(req.http.Accept-Charset)
"%22 contentLength=" req.http.Content-Length
" restarts=" req.restarts
" DataDomeDebug=" "Bypass_DataDome"
" fastlyFF=" fastly.ff.visits_this_service;
##
{% endif %}
}

# we're using the first restart for datadome, update a part of fastly code
# we can't replace whole macros because we haven't got any idea about backends
if (req.restarts == 1) {
if (!req.http.x-timer) {
set req.http.x-timer = "S" time.start.sec "." time.start.usec_frac;
}
set req.http.x-timer = req.http.x-timer ",VS0";
}

set var.fastly_req_do_shield = (req.restarts <= 1);

File

fastly_edge_modules/templates/datadome_integration_recv.html.twig
View source
  1. # Configure the regular expression below to match URLs that
  2. # should be checked by DataDome
  3. if (fastly.ff.visits_this_service == 0 && req.restarts == 0 && !(req.url.path ~ "{{ datadome_exclusion_ext }}" && (req.method == "GET" || req.method == "HEAD"))) {
  4. set req.backend = datadome;
  5. # Configure the string below to include your DataDome API key
  6. set req.http.x-datadome-params:method = urlencode(req.method);
  7. set req.http.x-datadome-params:postparamlen = urlencode(req.http.content-length);
  8. set req.method = "GET";
  9. {% if logging_endpoint %}
  10. ## Debug DataDome
  11. log {"syslog "} req.service_id {" {{ logging_endpoint }} :: "}
  12. " timestamp=%22" now
  13. "%22 client_ip=" req.http.Fastly-Client-IP
  14. " request=" req.method
  15. " host=" req.http.host
  16. " url=%22" cstr_escape(req.url)
  17. "%22 request_referer=%22" cstr_escape(req.http.Referer)
  18. "%22 request_user_agent=%22" cstr_escape(req.http.User-Agent)
  19. "%22 request_accept_language=%22" cstr_escape(req.http.Accept-Language)
  20. "%22 request_accept_charset=%22" cstr_escape(req.http.Accept-Charset)
  21. "%22 contentLength=" req.http.Content-Length
  22. " restarts=" req.restarts
  23. " DataDomeDebug=" "To_DataDome"
  24. " fastlyFF=" fastly.ff.visits_this_service;
  25. ##
  26. {% endif %}
  27. return (pass);
  28. } else {
  29. if (req.http.x-datadome-params:method) {
  30. set req.method = urldecode(req.http.x-datadome-params:method);
  31. # After a restart, clustering is disabled. This re-enables it.
  32. set req.http.fastly-force-shield = "1";
  33. }
  34. unset req.http.x-datadome-params;
  35. {% if logging_endpoint %}
  36. ## Debug DataDome
  37. log {"syslog "} req.service_id {" {{ logging_endpoint }} :: "}
  38. " timestamp=%22" now
  39. "%22 client_ip=" req.http.Fastly-Client-IP
  40. " request=" req.method
  41. " host=" req.http.host
  42. " url=%22" cstr_escape(req.url)
  43. "%22 request_referer=%22" cstr_escape(req.http.Referer)
  44. "%22 request_user_agent=%22" cstr_escape(req.http.User-Agent)
  45. "%22 request_accept_language=%22" cstr_escape(req.http.Accept-Language)
  46. "%22 request_accept_charset=%22" cstr_escape(req.http.Accept-Charset)
  47. "%22 contentLength=" req.http.Content-Length
  48. " restarts=" req.restarts
  49. " DataDomeDebug=" "Bypass_DataDome"
  50. " fastlyFF=" fastly.ff.visits_this_service;
  51. ##
  52. {% endif %}
  53. }
  54. # we're using the first restart for datadome, update a part of fastly code
  55. # we can't replace whole macros because we haven't got any idea about backends
  56. if (req.restarts == 1) {
  57. if (!req.http.x-timer) {
  58. set req.http.x-timer = "S" time.start.sec "." time.start.usec_frac;
  59. }
  60. set req.http.x-timer = req.http.x-timer ",VS0";
  61. }
  62. set var.fastly_req_do_shield = (req.restarts <= 1);