Spaces:
Running
Running
File size: 2,761 Bytes
95dc95a 1184b99 95dc95a 1184b99 95dc95a 1184b99 95dc95a 1184b99 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
import requests
from flask import Flask, Response, request
import socket
from pathlib import Path
import streamlit.web.bootstrap
from streamlit import config as _config
import kangas as kg
proj_dir = Path(__file__).parent
filename = proj_dir / "app.py"
_config.set_option("server.headless", True)
_config.set_option("server.port", 7840)
args = []
hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)
application = Flask(__name__)
@application.route('/kangas', strict_slashes=False)
@application.route('/kangas/<path:path>')
def kangas_proxy(path=None):
query_string = request.query_string.decode('utf-8')
if path is None and len(query_string) < 1:
resp = requests.get(f'http://{ip_address}:7640/')
else:
if path is None:
path = ''
resp = requests.get(f'http://{ip_address}:7640/{str(path)}?{query_string}')
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
response = Response(resp.content, resp.status_code, headers)
return response
@application.route('/api/<path:path>')
def api_proxy(path):
query_string = request.query_string.decode('utf-8')
resp = requests.get(f'http://{ip_address}:7640/api/{path}?{query_string}')
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
response = Response(resp.content, resp.status_code, headers)
return response
@application.route('/_next/<path:path>')
def next_proxy(path=None):
application.logger.info("PATH: %s" % path)
resp = requests.get(f'http://{ip_address}:7640/_next/%s' % path)
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
response = Response(resp.content, resp.status_code, headers)
return response
@application.route('/<path>.png')
@application.route('/<path>.ico')
def image_proxy(path=None):
application.logger.info(path)
resp = requests.get(f'http://{ip_address}:7640/%s.png' % path)
excluded_headers = ['content-encoding', 'content-length', 'transfer-encoding', 'connection']
headers = [(name, value) for (name, value) in resp.raw.headers.items() if name.lower() not in excluded_headers]
response = Response(resp.content, resp.status_code, headers)
application.logger.info(response)
return response
if __name__ == "__main__":
application.run(debug=True)
|