From 53fdb52ee8934b8a5d3e930096fc653d67e72366 Mon Sep 17 00:00:00 2001 From: j Date: Tue, 14 Nov 2017 18:40:20 +0100 Subject: [PATCH] cdn prefix --- pandora/app/views.py | 17 +++++++++++++++++ pandora/settings.py | 8 ++++++++ 2 files changed, 25 insertions(+) diff --git a/pandora/app/views.py b/pandora/app/views.py index a63ccfb6d..858509635 100644 --- a/pandora/app/views.py +++ b/pandora/app/views.py @@ -14,6 +14,7 @@ from oxdjango.shortcuts import json_response, render_to_json_response from oxdjango.decorators import login_required_json import ox +import ox.geo from ox.utils import json, ET from . import models @@ -163,6 +164,22 @@ def init(request, data): if request.META.get('HTTP_X_PREFIX') == 'NO': config['site']['videoprefix'] = '' config['site']['mediaprefix'] = '' + elif settings.CDN_PREFIX: + try: + city, country = get_location(get_ip(request)) + info = ox.geo.get_country(country) + prefix = None + for key in ('name', 'region', 'continent'): + location = info.get(key) + if location in settings.CDN_PREFIX: + prefix = settings.CDN_PREFIX[location] + break + if prefix: + config['site']['videoprefix'] = prefix['video'] + config['site']['mediaprefix'] = prefix['media'] + except: + pass + response['data']['site'] = config response['data']['user'] = init_user(request.user, request) request.session['last_init'] = str(datetime.now()) diff --git a/pandora/settings.py b/pandora/settings.py index d854004d6..ed5c649d2 100644 --- a/pandora/settings.py +++ b/pandora/settings.py @@ -225,6 +225,14 @@ VIDEO_PREFIX = '' MEDIA_PREFIX = '' #VIDEO_PREFIX = '//media.example.com' #SESSION_COOKIE_DOMAIN = '.example.com' +CDN_PREFIX = {} +# set video prefix baesd on country/region/continent +''' +CDN_PREFIX = { + 'India': {'media': 'https://media.in.example.com', 'video': 'https://{uid}.in.example.com'}, + 'Northern Africa': {'media': 'https://media.eg.example.com', 'video': 'https://{uid}.eg.example.com'}, +} +''' SESSION_COOKIE_AGE = 60*24*60*60