From 8504097e159ed5409392737861d46c1c12c85e1e Mon Sep 17 00:00:00 2001 From: milaq Date: Thu, 22 Aug 2019 01:31:13 +0200 Subject: [PATCH] Independent hardcoded vTuner URL handling All 'setupapp' calls are handled independently. Allows for easier distinction between hardcoded vTuner URLs and our own API calls. Also may prevent client crashes because of an invalid response with a landing page. --- ycast/server.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/ycast/server.py b/ycast/server.py index b839129..0d10d40 100644 --- a/ycast/server.py +++ b/ycast/server.py @@ -1,6 +1,6 @@ import logging -from flask import Flask, request, url_for +from flask import Flask, request, url_for, redirect, abort import ycast.vtuner as vtuner import ycast.radiobrowser as radiobrowser @@ -81,14 +81,21 @@ def get_paged_elements(items, requestargs): return items[offset:limit] -@app.route('/', defaults={'path': ''}) @app.route('/setupapp/') -@app.route('/' + PATH_ROOT + '/', defaults={'path': ''}) -def landing(path): +def upstream(path): if request.args.get('token') == '0': return vtuner.get_init_token() if request.args.get('search'): return station_search() + if 'loginXML.asp' in path: + return redirect(url_for('landing', _external=True), code=302) + logging.error("Unhandled upstream query (/setupapp/%s)", path) + abort(404) + + +@app.route('/', defaults={'path': ''}) +@app.route('/' + PATH_ROOT + '/', defaults={'path': ''}) +def landing(path): page = vtuner.Page() page.add(vtuner.Directory('Radiobrowser', url_for('radiobrowser_landing', _external=True), 4)) if my_stations_enabled: