mirror of
https://github.com/aljazceru/breez-sdk-liquid.git
synced 2026-01-15 20:14:25 +01:00
* Add regtest end-to-end tests * Check that regtest environment is set up * Add todo comment * Add missing gloo-timers feature * Link GH issues * Update DEVELOPMENT.md * Update boltz submodule * Fix after rebase
106 lines
3.1 KiB
Python
106 lines
3.1 KiB
Python
from flask import Flask, request, json, Response
|
|
from flask_cors import CORS
|
|
import requests
|
|
import logging
|
|
|
|
app = Flask(__name__)
|
|
CORS(app) # Allow all origins
|
|
|
|
# Configure logging
|
|
logging.basicConfig(level=logging.INFO)
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
@app.route('/proxy', methods=['GET', 'POST', 'PUT', 'DELETE'])
|
|
def proxy_request():
|
|
target_url = request.headers.get('X-Proxy-URL')
|
|
|
|
if not target_url:
|
|
return Response(
|
|
json.dumps({"error": "No target URL provided"}),
|
|
status=400,
|
|
mimetype='application/json'
|
|
)
|
|
|
|
try:
|
|
# Log the incoming request details
|
|
logger.info(f"Proxy request to: {target_url}")
|
|
logger.info(f"Request method: {request.method}")
|
|
logger.info(f"Request headers: {dict(request.headers)}")
|
|
|
|
# Try to log request body
|
|
try:
|
|
request_body = request.get_json(silent=True)
|
|
logger.info(f"Request body: {request_body}")
|
|
except Exception as body_log_error:
|
|
logger.error(f"Could not log request body: {body_log_error}")
|
|
|
|
# Prepare headers, excluding Flask-specific ones
|
|
headers = {
|
|
key: value for (key, value) in request.headers
|
|
if key not in ['Host', 'X-Proxy-URL', 'Content-Length']
|
|
}
|
|
|
|
# Determine the method and make the request
|
|
methods = {
|
|
'GET': requests.get,
|
|
'POST': requests.post,
|
|
'PUT': requests.put,
|
|
'DELETE': requests.delete
|
|
}
|
|
|
|
method = methods.get(request.method)
|
|
if not method:
|
|
return Response(
|
|
json.dumps({"error": "Unsupported HTTP method"}),
|
|
status=405,
|
|
mimetype='application/json'
|
|
)
|
|
|
|
# Prepare request arguments
|
|
kwargs = {
|
|
'url': target_url,
|
|
'headers': headers,
|
|
'verify': False # Bypass SSL verification
|
|
}
|
|
|
|
# Add data for methods that support it
|
|
if request.method in ['POST', 'PUT']:
|
|
# Try to parse request data as JSON if possible
|
|
request_json = request.get_json(silent=True)
|
|
if request_json:
|
|
kwargs['json'] = request_json
|
|
else:
|
|
kwargs['data'] = request.get_data()
|
|
|
|
# Make the request
|
|
try:
|
|
response = method(**kwargs)
|
|
except Exception as request_error:
|
|
logger.error(f"Request error: {request_error}")
|
|
return Response(
|
|
json.dumps({
|
|
"error": "Failed to make request to target service",
|
|
"details": str(request_error)
|
|
}),
|
|
status=500,
|
|
mimetype='application/json'
|
|
)
|
|
|
|
return Response(
|
|
response.text,
|
|
status=response.status_code,
|
|
mimetype='application/json'
|
|
)
|
|
|
|
except Exception as e:
|
|
logger.error(f"Unexpected error: {e}")
|
|
return Response(
|
|
json.dumps({"error": str(e)}),
|
|
status=500,
|
|
mimetype='application/json'
|
|
)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0', port=51234) |