Add request host checking to redirects
Notifies the user even without debug logging and makes troubleshooting easier.
This commit is contained in:
parent
9ce1e19ea3
commit
ceb71ab00d
1 changed files with 9 additions and 1 deletions
|
@ -1,4 +1,5 @@
|
||||||
import logging
|
import logging
|
||||||
|
import re
|
||||||
|
|
||||||
from flask import Flask, request, url_for, redirect, abort, make_response
|
from flask import Flask, request, url_for, redirect, abort, make_response
|
||||||
|
|
||||||
|
@ -105,6 +106,13 @@ def get_station_by_id(stationid, additional_info=False):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
|
def vtuner_redirect(url):
|
||||||
|
if request and request.host and not re.search("^[A-Za-z0-9]+\.vtuner\.com$", request.host):
|
||||||
|
logging.warning("You are not accessing a YCast redirect with a whitelisted host url (*.vtuner.com). "
|
||||||
|
"Some AVRs have problems with this. The requested host was: %s", request.host)
|
||||||
|
return redirect(url, code=302)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/setupapp/<path:path>')
|
@app.route('/setupapp/<path:path>')
|
||||||
def upstream(path):
|
def upstream(path):
|
||||||
if request.args.get('token') == '0':
|
if request.args.get('token') == '0':
|
||||||
|
@ -227,7 +235,7 @@ def get_stream_url():
|
||||||
logging.error("Could not get station with id '%s'", stationid)
|
logging.error("Could not get station with id '%s'", stationid)
|
||||||
abort(404)
|
abort(404)
|
||||||
logging.debug("Station with ID '%s' requested", station.id)
|
logging.debug("Station with ID '%s' requested", station.id)
|
||||||
return redirect(station.url, code=302)
|
return vtuner_redirect(station.url)
|
||||||
|
|
||||||
|
|
||||||
@app.route('/' + PATH_ROOT + '/' + PATH_STATION)
|
@app.route('/' + PATH_ROOT + '/' + PATH_STATION)
|
||||||
|
|
Loading…
Reference in a new issue