Fix SSH port to 2222; add HTTP validation server as alternative
This commit is contained in:
@@ -0,0 +1,89 @@
|
|||||||
|
{
|
||||||
|
"name": "MQL Settings Monitor - HTTP Simple",
|
||||||
|
"nodes": [
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"rule": {
|
||||||
|
"interval": [
|
||||||
|
{
|
||||||
|
"field": "hours",
|
||||||
|
"hoursInterval": 6
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Every 6 Hours",
|
||||||
|
"type": "n8n-nodes-base.scheduleTrigger",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [250, 300]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"requestMethod": "GET",
|
||||||
|
"url": "http://127.0.0.1:8080/validate",
|
||||||
|
"options": {
|
||||||
|
"timeout": 30000
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "HTTP Request - Validate",
|
||||||
|
"type": "n8n-nodes-base.httpRequest",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [450, 300]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"conditions": {
|
||||||
|
"string": [
|
||||||
|
{
|
||||||
|
"value1": "={{ $json.status }}",
|
||||||
|
"operation": "notEqual",
|
||||||
|
"value2": "ok"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"name": "Has Issues?",
|
||||||
|
"type": "n8n-nodes-base.if",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [650, 300]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {
|
||||||
|
"chatId": "={{ $env.TELEGRAM_CHAT_ID }}",
|
||||||
|
"text": "=🚨 <b>MQL Settings Issues</b>\n\n<pre>{{ $json.stdout }}</pre>\n\n⏰ {{ new Date().toLocaleString() }}"
|
||||||
|
},
|
||||||
|
"name": "Telegram Alert",
|
||||||
|
"type": "n8n-nodes-base.telegram",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [850, 200]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"parameters": {},
|
||||||
|
"name": "No Issues",
|
||||||
|
"type": "n8n-nodes-base.noOp",
|
||||||
|
"typeVersion": 1,
|
||||||
|
"position": [850, 400]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"connections": {
|
||||||
|
"Every 6 Hours": {
|
||||||
|
"main": [
|
||||||
|
[{ "node": "HTTP Request - Validate", "type": "main", "index": 0 }]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"HTTP Request - Validate": {
|
||||||
|
"main": [
|
||||||
|
[{ "node": "Has Issues?", "type": "main", "index": 0 }]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"Has Issues?": {
|
||||||
|
"main": [
|
||||||
|
[{ "node": "Telegram Alert", "type": "main", "index": 0 }],
|
||||||
|
[{ "node": "No Issues", "type": "main", "index": 0 }]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"settings": {
|
||||||
|
"executionOrder": "v1"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,8 +23,8 @@
|
|||||||
{
|
{
|
||||||
"parameters": {
|
"parameters": {
|
||||||
"authentication": "password",
|
"authentication": "password",
|
||||||
"host": "localhost",
|
"host": "127.0.0.1",
|
||||||
"port": 22,
|
"port": 2222,
|
||||||
"username": "garfield",
|
"username": "garfield",
|
||||||
"password": "=onelove01",
|
"password": "=onelove01",
|
||||||
"command": "/home/garfield/mql-trading-bots/scripts/validate-settings.sh"
|
"command": "/home/garfield/mql-trading-bots/scripts/validate-settings.sh"
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=MQL Validation HTTP Server
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=garfield
|
||||||
|
WorkingDirectory=/home/garfield/mql-trading-bots
|
||||||
|
ExecStart=/usr/bin/python3 /home/garfield/mql-trading-bots/scripts/validation-server.py
|
||||||
|
Restart=always
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
Executable
+56
@@ -0,0 +1,56 @@
|
|||||||
|
#!/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()
|
||||||
Reference in New Issue
Block a user