Removing proxy_request in favor of hosted proxy; Adding icecast control to Outputs; Buttons tidy-up

This commit is contained in:
James Barnsley
2018-07-01 21:08:35 +12:00
parent 7bd5066fe2
commit 122f99d027
15 changed files with 698 additions and 714 deletions

View File

@ -934,82 +934,6 @@ class IrisCore(object):
return error
##
# Proxy a request to an external provider
#
# This is required when requesting to non-CORS providers. We simply make the request
# server-side and pass that back. All we change is the response's Access-Control-Allow-Origin
# to prevent CORS-blocking by the browser.
##
def proxy_request(self, *args, **kwargs):
callback = kwargs.get('callback', False)
origin_request = kwargs.get('request', None)
try:
data = kwargs.get('data', {})
except:
callback(False, {
'message': 'Malformed data',
'source': 'proxy_request'
})
return
# Our request includes data, so make sure we POST the data
if 'url' not in data:
callback(False, {
'message': 'Malformed data (missing URL)',
'source': 'proxy_request',
'original_request': data
})
return
# Construct request headers
# If we have an original request, pass through it's headers
if origin_request:
headers = origin_request.headers
else:
headers = {}
# Adjust headers
headers["Accept-Language"] = "*"
headers["Accept-Encoding"] = "deflate"
if "Content-Type" in headers:
del headers["Content-Type"]
if "Host" in headers:
del headers["Host"]
if "X-Requested-With" in headers:
del headers["X-Requested-With"]
if "X-Forwarded-Server" in headers:
del headers["X-Forwarded-Server"]
if "X-Forwarded-Host" in headers:
del headers["X-Forwarded-Host"]
if "X-Forwarded-For" in headers:
del headers["X-Forwarded-For"]
if "Referrer" in headers:
del headers["Referrer"]
# Our request includes data, so make sure we POST the data
if ('data' in data and data['data']):
http_client = tornado.httpclient.AsyncHTTPClient()
request = tornado.httpclient.HTTPRequest(data['url'], method='POST', body=json.dumps(data['data']), headers=headers, validate_cert=False)
http_client.fetch(request, callback=callback)
# No data, so just a simple GET request
else:
# Strip out our origin content-length otherwise this confuses
# the target server as content-length doesn't apply to GET requests
if "Content-Length" in headers:
del headers["Content-Length"]
http_client = tornado.httpclient.AsyncHTTPClient()
request = tornado.httpclient.HTTPRequest(data['url'], headers=headers, validate_cert=False)
http_client.fetch(request, callback=callback)
##
# Detect if we're running as root
##