32 lines
828 B
Python
32 lines
828 B
Python
from flask import Flask, request, jsonify
|
|
import requests
|
|
import sys
|
|
import os
|
|
import json
|
|
|
|
app = Flask(__name__)
|
|
|
|
# Target JSON-RPC server, e.g., an Ethereum node
|
|
TARGET_URL = os.getenv('TARGET_URL', 'http://host.docker.internal:8545')
|
|
|
|
@app.route('/', methods=['POST'])
|
|
def proxy():
|
|
incoming = request.get_json()
|
|
request_log = f"==> Request:\n{json.dumps(incoming, indent=2)}"
|
|
|
|
response = requests.post(TARGET_URL, json=incoming)
|
|
outgoing = response.json()
|
|
|
|
log_lines = [request_log]
|
|
|
|
if 'error' in outgoing:
|
|
response_log = f"<== Response (Error):\n{json.dumps(outgoing, indent=2)}"
|
|
log_lines.append(response_log)
|
|
|
|
print('\n---\n'.join(log_lines), file=sys.stdout, flush=True)
|
|
|
|
return jsonify(outgoing)
|
|
|
|
if __name__ == '__main__':
|
|
app.run(host='0.0.0.0', port=8545)
|