<commit_before># DO NOT EDIT - This file is being maintained by Chef

upstream tile_cache_backend {
  server 127.0.0.1:8080 weight=1000 max_fails=32;
  server 127.0.0.2:8080 weight=1000 max_fails=32;

  # Add the tile_siblings caches to relieve pressure if local squid failing
  # Balancer: round-robin
<% server_weight = 1000 -%>
<% Array(@node[:tilecache][:tile_siblings]).each do |cache_peer| -%>
<% @caches.each do |cache| -%>
<% if cache_peer == cache[:fqdn] -%>
<% if cache[:hostname] != node[:hostname] -%>
<% cache.ipaddresses(:family => :inet, :role => :external).sort.each do |address| -%>
  server <%= address %>:80 weight=<%= server_weight %> max_fails=32 backup; # Server <%= cache[:hostname] %>
<% server_weight -= server_weight.div(2) -%>
<% end -%>
<% end -%>
<% end -%>
<% end -%>
<% end -%>

  keepalive 128;
}

# Geo Map of tile caches
geo $tile_cache {
  default "client";
<% @caches.each do |cache| -%>
<% cache.ipaddresses(:family => :inet, :role => :external).sort.each do |address| -%>
  <%= address %> "cache"; # <%= cache[:hostname] %>
<% end -%>
<% end -%>
}

# Rates table based on current cookie value
# map $cookie__osm_totp_token $limit_rate_qos {
#  include /etc/nginx/conf.d/tile_qos_rates.map;
# }

# Set-Cookie table based on current cookie value
# map $cookie__osm_totp_token $cookie_qos_token_set {
#  include /etc/nginx/conf.d/tile_qos_cookies.map;
# }

map $http_user_agent $approved_scraper {
  default                   0; # Not approved
  '~^JOSM\/'                1; # JOSM
  '~^Mozilla\/5\.0\ QGIS\/' 1; # QGIS
}

map $http_user_agent $denied_scraper {
  default                0; # Not denied
  ''                     1; # No User-Agent Set
  '~^Python\-urllib\/'   1; # Library Default
  '~^python\-requests\/' 1; # Library Default
  '~^node\-fetch\/'      1; # Library Default
  '~^R$'                 1; # Library Default
  '~^Java\/'             1; # Library Default
  '~^tiles$'             1; # Library Default
  '~^okhttp\/'           1; # Library Default
  '~^Microsoft-ATL-Native\/' 1; # Library Default
  '/n software IPWorks HTTP/S Component - www.nsoftware.com' 1; #Library default
  '~^Wget\/'             1; # Library Default
  'C# TilesDownloader'   1; # Downloader
  'MapDownloader'        1; # Downloader
  '~^staticmaps'         1; # Downloader
  'Android'              1; # Default or fake
  'kc_android'           1; # Default or fake
  'Mozilla/4.0'          1; # Fake
  'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)' 1;  # Fake
  '~^runtastic'          1; # App
  '~^Where\ my\ children' 1; # App
  'nossoonibusjp.android.crosswalk' 1; # App
  'br.com.concisoti.potybus' 1; # App
  'com.soft373.taptaxi'  1;
  'com.kradac.ktxcore'   1;
  'ru.crowdsystems.topcontrol.knd' 1;
  'pl.itaxi.driver'      1;
  'net.uztaxi.driver'    1;
  'OSMDroid/2.1 (its; rutaxi 3.28.0)' 1;
  'com.helleniccomms.mercedes.driver' 1;
  'ru.taximaster.www'    1;
  'com.arobs.trackgps'   1;
  'com.helleniccomms.asteras.driver' 1;
  # '~[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}' 1; # Fake UA
}

map $http_referer $denied_referer {
  default                          0; # Not denied
  'http://www.openstreetmap.org/'  1; # Faked
  'http://www.openstreetmap.org'   1; # Faked
  'https://www.openstreetmap.org'  1; # Faked
  'http://openstreetmap.org/'      1; # Faked
  'http://openstreetmap.org'       1; # Faked
  'https://openstreetmap.org'      1; # Faked
  'http://www.osm.org/'            1; # Faked
  'http://www.osm.org'             1; # Faked
  'http://osm.org/'                1; # Faked
  'http://osm.org'                 1; # Faked
  'http://google.com'              1; # Faked
  'http://www.google.com'          1; # Faked
  'http://google.com/'             1; # Faked
  'http://www.google.com/'         1; # Faked
  'https://google.com'             1; # Faked
  'https://www.google.com'         1; # Faked
  'https://google.com/'            1; # Faked
  'https://www.google.com/'        1; # Faked
  'http://www.microsoft.com/'      1; # Faked
  '~^https?://pmap\.kuku\.lu/'           1; # Too much traffic
  '~^https?://[^.]*\.pmap\.kuku\.lu/'    1; # Too much traffic
  '~^https?://fastpokemap\.com/'         1; # Too much traffic
  '~^https?://[^.]*\.fastpokemap\.com/'  1; # Too much traffic
  '~^https?://pkget\.com/'               1; # Too much traffic
  '~^https?://[^.]*\.pkget\.com/'        1; # Too much traffic
  '~^https?://twpkinfo\.com/'            1; # Too much traffic
  '~^https?://[^.]*\.twpkinfo\.com/'     1; # Too much traffic
  '~^https?://9db\.jp/'                  1; # Too much traffic
  '~^https?://[^.]*\.9db\.jp/'           1; # Too much traffic
  '~^https?://clustrmaps\.com/'          1; # Too much traffic
  '~^https?://[^.]*\.clustrmaps\.com/'   1; # Too much traffic
}

map $http_referer $osm_referer {
  default                                 '';    # False
  '~^https:\/\/www\.openstreetmap\.org\/' 'osm'; # True
}

# Limit Cache-Control header to only approved User-Agents
map $tile_cache$osm_referer$http_user_agent $limit_http_cache_control {
  default '';                             # Unset Header
  '~^clientosmMozilla\/5\.0\ \(X11'       $http_cache_control; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Windows'   $http_cache_control; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(iPhone'    $http_cache_control; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Macintosh' $http_cache_control; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Linux'     $http_cache_control; # Pass Header
}

# Limit Pragma header to only approved User-Agents
map $tile_cache$osm_referer$http_user_agent $limit_http_pragma {
  default '';                             # Unset Header
  '~^clientosmMozilla\/5\.0\ \(X11'       $http_pragma; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Windows'   $http_pragma; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(iPhone'    $http_pragma; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Macintosh' $http_pragma; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Linux'     $http_pragma; # Pass Header
}

# Find Browser User-Agents which are not sending a referer.<commit_msg>Block more heavy user apps and sites<commit_after># DO NOT EDIT - This file is being maintained by Chef

upstream tile_cache_backend {
  server 127.0.0.1:8080 weight=1000 max_fails=32;
  server 127.0.0.2:8080 weight=1000 max_fails=32;

  # Add the tile_siblings caches to relieve pressure if local squid failing
  # Balancer: round-robin
<% server_weight = 1000 -%>
<% Array(@node[:tilecache][:tile_siblings]).each do |cache_peer| -%>
<% @caches.each do |cache| -%>
<% if cache_peer == cache[:fqdn] -%>
<% if cache[:hostname] != node[:hostname] -%>
<% cache.ipaddresses(:family => :inet, :role => :external).sort.each do |address| -%>
  server <%= address %>:80 weight=<%= server_weight %> max_fails=32 backup; # Server <%= cache[:hostname] %>
<% server_weight -= server_weight.div(2) -%>
<% end -%>
<% end -%>
<% end -%>
<% end -%>
<% end -%>

  keepalive 128;
}

# Geo Map of tile caches
geo $tile_cache {
  default "client";
<% @caches.each do |cache| -%>
<% cache.ipaddresses(:family => :inet, :role => :external).sort.each do |address| -%>
  <%= address %> "cache"; # <%= cache[:hostname] %>
<% end -%>
<% end -%>
}

# Rates table based on current cookie value
# map $cookie__osm_totp_token $limit_rate_qos {
#  include /etc/nginx/conf.d/tile_qos_rates.map;
# }

# Set-Cookie table based on current cookie value
# map $cookie__osm_totp_token $cookie_qos_token_set {
#  include /etc/nginx/conf.d/tile_qos_cookies.map;
# }

map $http_user_agent $approved_scraper {
  default                   0; # Not approved
  '~^JOSM\/'                1; # JOSM
  '~^Mozilla\/5\.0\ QGIS\/' 1; # QGIS
}

map $http_user_agent $denied_scraper {
  default                0; # Not denied
  ''                     1; # No User-Agent Set
  '~^Python\-urllib\/'   1; # Library Default
  '~^python\-requests\/' 1; # Library Default
  '~^node\-fetch\/'      1; # Library Default
  '~^R$'                 1; # Library Default
  '~^Java\/'             1; # Library Default
  '~^tiles$'             1; # Library Default
  '~^okhttp\/'           1; # Library Default
  '~^Microsoft-ATL-Native\/' 1; # Library Default
  '/n software IPWorks HTTP/S Component - www.nsoftware.com' 1; #Library default
  '~^Wget\/'             1; # Library Default
  'C# TilesDownloader'   1; # Downloader
  'MapDownloader'        1; # Downloader
  '~^staticmaps'         1; # Downloader
  'Android'              1; # Default or fake
  'kc_android'           1; # Default or fake
  'host'                 1; # Default or fake
  '~^maptestapp'         1; # Default or fake
  'Other'                1; # Default or fake
  'Mozilla/4.0'          1; # Fake
  'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)' 1;  # Fake
  '~^runtastic'          1; # App
  '~^Where\ my\ children' 1; # App
  'nossoonibusjp.android.crosswalk' 1; # App
  'br.com.concisoti.potybus' 1; # App
  'com.soft373.taptaxi'  1;
  'com.kradac.ktxcore'   1;
  'ru.crowdsystems.topcontrol.knd' 1;
  'pl.itaxi.driver'      1;
  'net.uztaxi.driver'    1;
  'OSMDroid/2.1 (its; rutaxi 3.28.0)' 1;
  'com.helleniccomms.mercedes.driver' 1;
  'ru.taximaster.www'    1;
  'com.arobs.trackgps'   1;
  'com.helleniccomms.asteras.driver' 1;
  # '~[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}' 1; # Fake UA
}

map $http_referer $denied_referer {
  default                          0; # Not denied
  'http://www.openstreetmap.org/'  1; # Faked
  'http://www.openstreetmap.org'   1; # Faked
  'https://www.openstreetmap.org'  1; # Faked
  'http://openstreetmap.org/'      1; # Faked
  'http://openstreetmap.org'       1; # Faked
  'https://openstreetmap.org'      1; # Faked
  'http://www.osm.org/'            1; # Faked
  'http://www.osm.org'             1; # Faked
  'http://osm.org/'                1; # Faked
  'http://osm.org'                 1; # Faked
  'http://google.com'              1; # Faked
  'http://www.google.com'          1; # Faked
  'http://google.com/'             1; # Faked
  'http://www.google.com/'         1; # Faked
  'https://google.com'             1; # Faked
  'https://www.google.com'         1; # Faked
  'https://google.com/'            1; # Faked
  'https://www.google.com/'        1; # Faked
  'http://www.microsoft.com/'      1; # Faked
  '~^https?://pmap\.kuku\.lu/'           1; # Too much traffic
  '~^https?://[^.]*\.pmap\.kuku\.lu/'    1; # Too much traffic
  '~^https?://fastpokemap\.com/'         1; # Too much traffic
  '~^https?://[^.]*\.fastpokemap\.com/'  1; # Too much traffic
  '~^https?://pkget\.com/'               1; # Too much traffic
  '~^https?://[^.]*\.pkget\.com/'        1; # Too much traffic
  '~^https?://twpkinfo\.com/'            1; # Too much traffic
  '~^https?://[^.]*\.twpkinfo\.com/'     1; # Too much traffic
  '~^https?://9db\.jp/'                  1; # Too much traffic
  '~^https?://[^.]*\.9db\.jp/'           1; # Too much traffic
  '~^https?://clustrmaps\.com/'          1; # Too much traffic
  '~^https?://[^.]*\.clustrmaps\.com/'   1; # Too much traffic
  '~^https?://geoportal360\.pl/'         1; # Too much traffic
  '~^https?://skelbiu\.lt/'              1; # Too much traffic
  '~^https?://[^.]*\.skelbiu\.lt/'       1; # Too much traffic
  '~^https?://[^.]*\.wialon.com/'        1; # Too much traffic
}

map $http_referer $osm_referer {
  default                                 '';    # False
  '~^https:\/\/www\.openstreetmap\.org\/' 'osm'; # True
}

# Limit Cache-Control header to only approved User-Agents
map $tile_cache$osm_referer$http_user_agent $limit_http_cache_control {
  default '';                             # Unset Header
  '~^clientosmMozilla\/5\.0\ \(X11'       $http_cache_control; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Windows'   $http_cache_control; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(iPhone'    $http_cache_control; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Macintosh' $http_cache_control; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Linux'     $http_cache_control; # Pass Header
}

# Limit Pragma header to only approved User-Agents
map $tile_cache$osm_referer$http_user_agent $limit_http_pragma {
  default '';                             # Unset Header
  '~^clientosmMozilla\/5\.0\ \(X11'       $http_pragma; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Windows'   $http_pragma; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(iPhone'    $http_pragma; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Macintosh' $http_pragma; # Pass Header
  '~^clientosmMozilla\/5\.0\ \(Linux'     $http_pragma; # Pass Header
}

# Find Browser User-Agents which are not sending a referer.
{'fraction_non_alphanumeric': 0.18293553247165173, 'fraction_numerical': 0.028070731900721593, 'mean_word_length': 2.3198210055277704, 'pattern_counts': {'":': 0, '<': 45, '<?xml version=': 0, '>': 53, 'https://': 12, 'lorem ipsum': 0, 'www.': 26, 'xml': 0}, 'pii_count': 4, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 18, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6077092', 'n_tokens_mistral': 5048, 'n_tokens_neox': 4632, 'n_words': 1000}