tilecache: generate nginx QoS maps
[chef.git] / cookbooks / tilecache / templates / default / nginx_generate_tilecache_qos_map.erb
1 #!/bin/bash
2 # DO NOT EDIT - This file is being maintained by Chef
3
4 set -e
5 NUM_TOKENS=3 # current + 3
6 VALID_TOKEN=3600 # in seconds
7 QOS_TOKENS=($(/usr/bin/oathtool --totp --window=${NUM_TOKENS} --time-step-size=${VALID_TOKEN}s <%= tokens[:tilecache_oath_key] %>))
8
9 # ${qos_tokens[3]/[-1] } = OSM.org exclusive / current
10 # ${qos_tokens[2]/[-2] } = tile.openstreetmap.org default
11 # ${qos_tokens[1]/[-3] } = stale ~ 1 hour
12 # ${qos_tokens[0]} = expired
13
14 # Test if number of tokens returned by oathtool is expected number
15 if [ "${#QOS_TOKENS[@]}" -ne "$((${NUM_TOKENS}+1))" ]; then
16   >&2 echo "ERROR: Unexpected number of tokens"
17   exit 1
18 fi
19
20 QOS_TOKEN_OSM=${QOS_TOKENS[-1]} # Cookie set by openstreetmap.org
21 QOS_TOKEN_DEFAULT=${QOS_TOKENS[-2]} # Cookie presented by tile.openstreetmap.org to browsers
22 QOS_TOKEN_STALE=${QOS_TOKENS[-3]} # Cookie which has become stale and will be replaced
23
24 if [ -z "$QOS_TOKEN_OSM" -o -z "$QOS_TOKEN_DEFAULT" -o -z "$QOS_TOKEN_STALE" ]; then
25   >&2 echo "ERROR: Unexpected blank token"
26   exit 2
27 fi
28
29 cat <<EOF >/etc/nginx/conf.d/tile_qos_rates.map
30 default 4096; # Default Rate (No QoS cookie)
31 "${QOS_TOKEN_STALE}" 16384; # Stale
32 "${QOS_TOKEN_DEFAULT}" 24576; # Default
33 "${QOS_TOKEN_OSM}" 32768; # Exclusive
34 EOF
35
36 cat <<EOF >/etc/nginx/conf.d/tile_qos_cookies.map
37 default 'qos_token=${QOS_TOKEN_DEFAULT}; Secure; httponly; Max-Age=${VALID_TOKEN}; Domain=tile.openstreetmap.org; Path=/'; # Cookie Domain per RFC6265
38 "${QOS_TOKEN_DEFAULT}" ''; # Do not Set-Cookie. # Default
39 "${QOS_TOKEN_OSM}" ''; # Do not Set-Cookie. # Exclusive
40 EOF
41
42 /etc/init.d/nginx configtest && service nginx reload