57 lines
1.7 KiB
Python
Executable File
57 lines
1.7 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Simple HTTP server to expose validation script for n8n
|
|
Usage: python3 validation-server.py
|
|
Access: http://localhost:8080/validate
|
|
"""
|
|
|
|
import http.server
|
|
import socketserver
|
|
import subprocess
|
|
import json
|
|
import os
|
|
|
|
PORT = 8080
|
|
REPO_DIR = "/home/garfield/mql-trading-bots"
|
|
|
|
class ValidationHandler(http.server.SimpleHTTPRequestHandler):
|
|
def do_GET(self):
|
|
if self.path == '/validate':
|
|
# Run validation script
|
|
os.chdir(REPO_DIR)
|
|
result = subprocess.run(
|
|
['./scripts/validate-settings.sh'],
|
|
capture_output=True,
|
|
text=True
|
|
)
|
|
|
|
# Build response
|
|
response = {
|
|
'status': 'ok' if result.returncode == 0 else 'error',
|
|
'code': result.returncode,
|
|
'stdout': result.stdout,
|
|
'stderr': result.stderr
|
|
}
|
|
|
|
# Send response
|
|
self.send_response(200)
|
|
self.send_header('Content-Type', 'application/json')
|
|
self.end_headers()
|
|
self.wfile.write(json.dumps(response).encode())
|
|
elif self.path == '/health':
|
|
self.send_response(200)
|
|
self.send_header('Content-Type', 'application/json')
|
|
self.end_headers()
|
|
self.wfile.write(json.dumps({'status': 'healthy'}).encode())
|
|
else:
|
|
self.send_error(404)
|
|
|
|
def log_message(self, format, *args):
|
|
# Suppress logs
|
|
pass
|
|
|
|
if __name__ == '__main__':
|
|
with socketserver.TCPServer(("127.0.0.1", PORT), ValidationHandler) as httpd:
|
|
print(f"Validation server running at http://127.0.0.1:{PORT}/validate")
|
|
httpd.serve_forever()
|