add settings to use external cached tile server
This commit is contained in:
parent
0fec7ff89c
commit
443d58965d
5 changed files with 17 additions and 8 deletions
|
@ -27,8 +27,9 @@ def set_tile_access_cookie(func):
|
||||||
|
|
||||||
access_permissions = AccessPermission.get_for_request(request)
|
access_permissions = AccessPermission.get_for_request(request)
|
||||||
if access_permissions:
|
if access_permissions:
|
||||||
bla = build_tile_access_cookie(access_permissions, settings.SECRET_TILE_KEY)
|
cookie = build_tile_access_cookie(access_permissions, settings.SECRET_TILE_KEY)
|
||||||
response.set_cookie(settings.TILE_ACCESS_COOKIE_NAME, bla, max_age=60)
|
response.set_cookie(settings.TILE_ACCESS_COOKIE_NAME, cookie, max_age=60,
|
||||||
|
domain=settings.TILE_ACCESS_COOKIE_DOMAIN)
|
||||||
else:
|
else:
|
||||||
response.delete_cookie(settings.TILE_ACCESS_COOKIE_NAME)
|
response.delete_cookie(settings.TILE_ACCESS_COOKIE_NAME)
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,8 @@ config = configparser.RawConfigParser()
|
||||||
config.read(['/etc/c3nav/c3nav.cfg', os.path.expanduser('~/.c3nav.cfg'), os.environ.get('C3NAV_CONFIG', 'c3nav.cfg')],
|
config.read(['/etc/c3nav/c3nav.cfg', os.path.expanduser('~/.c3nav.cfg'), os.environ.get('C3NAV_CONFIG', 'c3nav.cfg')],
|
||||||
encoding='utf-8')
|
encoding='utf-8')
|
||||||
|
|
||||||
|
INSTANCE_NAME = config.get('c3nav', 'name', fallback='noname')
|
||||||
|
|
||||||
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
|
||||||
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
|
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
|
||||||
DATA_DIR = config.get('c3nav', 'datadir', fallback=os.environ.get('DATA_DIR', 'data'))
|
DATA_DIR = config.get('c3nav', 'datadir', fallback=os.environ.get('DATA_DIR', 'data'))
|
||||||
|
@ -161,13 +163,16 @@ CELERY_RESULT_SERIALIZER = 'json'
|
||||||
SESSION_COOKIE_DOMAIN = config.get('c3nav', 'cookie_domain', fallback=None)
|
SESSION_COOKIE_DOMAIN = config.get('c3nav', 'cookie_domain', fallback=None)
|
||||||
SESSION_COOKIE_SECURE = config.getboolean('c3nav', 'session_cookie_secure', fallback=False)
|
SESSION_COOKIE_SECURE = config.getboolean('c3nav', 'session_cookie_secure', fallback=False)
|
||||||
|
|
||||||
|
TILE_CACHE_SERVER = config.get('c3nav', 'tile_cache_server', fallback=None)
|
||||||
|
TILE_ACCESS_COOKIE_DOMAIN = config.get('c3nav', 'tile_access_cookie_domain', fallback=None)
|
||||||
|
|
||||||
# Internal settings
|
# Internal settings
|
||||||
STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static.dist')
|
STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static.dist')
|
||||||
|
|
||||||
SESSION_COOKIE_NAME = 'c3nav_session'
|
SESSION_COOKIE_NAME = 'c3nav_%s_session' % INSTANCE_NAME
|
||||||
LANGUAGE_COOKIE_NAME = 'c3nav_language'
|
LANGUAGE_COOKIE_NAME = 'c3nav_%s_language' % INSTANCE_NAME
|
||||||
CSRF_COOKIE_NAME = 'c3nav_csrftoken'
|
CSRF_COOKIE_NAME = 'c3nav_%s_csrftoken' % INSTANCE_NAME
|
||||||
TILE_ACCESS_COOKIE_NAME = 'c3nav_tile_access'
|
TILE_ACCESS_COOKIE_NAME = 'c3nav_%s_tile_access' % INSTANCE_NAME
|
||||||
SESSION_COOKIE_HTTPONLY = True
|
SESSION_COOKIE_HTTPONLY = True
|
||||||
|
|
||||||
# Application definition
|
# Application definition
|
||||||
|
|
|
@ -438,6 +438,7 @@ c3nav = {
|
||||||
var $map = $('#map'), i;
|
var $map = $('#map'), i;
|
||||||
c3nav.bounds = JSON.parse($map.attr('data-bounds'));
|
c3nav.bounds = JSON.parse($map.attr('data-bounds'));
|
||||||
c3nav.levels = JSON.parse($map.attr('data-levels'));
|
c3nav.levels = JSON.parse($map.attr('data-levels'));
|
||||||
|
c3nav.tile_server = $map.attr('data-tile-server');
|
||||||
|
|
||||||
c3nav.level_labels_by_id = {};
|
c3nav.level_labels_by_id = {};
|
||||||
for (i = 0; i < c3nav.levels.length; i ++) {
|
for (i = 0; i < c3nav.levels.length; i ++) {
|
||||||
|
@ -630,7 +631,7 @@ LevelControl = L.Control.extend({
|
||||||
},
|
},
|
||||||
|
|
||||||
addLevel: function (id, title) {
|
addLevel: function (id, title) {
|
||||||
this._tileLayers[id] = L.tileLayer('/map/' + String(id) + '/{z}/{x}/{y}.png', {
|
this._tileLayers[id] = L.tileLayer((c3nav.tile_server || '/map/') + String(id) + '/{z}/{x}/{y}.png', {
|
||||||
bounds: L.GeoJSON.coordsToLatLngs(c3nav.bounds)
|
bounds: L.GeoJSON.coordsToLatLngs(c3nav.bounds)
|
||||||
});
|
});
|
||||||
var overlay = L.layerGroup();
|
var overlay = L.layerGroup();
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
<button class="button-clear as-destination">Route to here</button>
|
<button class="button-clear as-destination">Route to here</button>
|
||||||
<button class="button-clear as-origin">Route from here</button>
|
<button class="button-clear as-origin">Route from here</button>
|
||||||
</section>
|
</section>
|
||||||
<section id="map" data-bounds="{{ bounds }}" data-levels="{{ levels }}"></section>
|
<section id="map" data-bounds="{{ bounds }}" data-levels="{{ levels }}"{% if tile_cache_server %} data-tile-server="{{ tile_cache_server }}"{% endif %}></section>
|
||||||
<section id="sidebar">
|
<section id="sidebar">
|
||||||
<section id="search" class="loading">
|
<section id="search" class="loading">
|
||||||
<div class="location locationinput empty" id="origin-input">
|
<div class="location locationinput empty" id="origin-input">
|
||||||
|
|
|
@ -5,6 +5,7 @@ from datetime import timedelta
|
||||||
from typing import Mapping, Optional
|
from typing import Mapping, Optional
|
||||||
|
|
||||||
import qrcode
|
import qrcode
|
||||||
|
from django.conf import settings
|
||||||
from django.core.cache import cache
|
from django.core.cache import cache
|
||||||
from django.http import Http404, HttpResponse, JsonResponse
|
from django.http import Http404, HttpResponse, JsonResponse
|
||||||
from django.shortcuts import redirect, render
|
from django.shortcuts import redirect, render
|
||||||
|
@ -145,6 +146,7 @@ def map_index(request, mode=None, slug=None, slug2=None, level=None, x=None, y=N
|
||||||
'bounds': json.dumps(Source.max_bounds(), separators=(',', ':')),
|
'bounds': json.dumps(Source.max_bounds(), separators=(',', ':')),
|
||||||
'levels': json.dumps(tuple(levels.values()), separators=(',', ':')),
|
'levels': json.dumps(tuple(levels.values()), separators=(',', ':')),
|
||||||
'state': json.dumps(state, separators=(',', ':')),
|
'state': json.dumps(state, separators=(',', ':')),
|
||||||
|
'tile_cache_server': settings.TILE_CACHE_SERVER,
|
||||||
}
|
}
|
||||||
return render(request, 'site/map.html', ctx)
|
return render(request, 'site/map.html', ctx)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue