refactor: replace REST API with Unix socket IPC + CLI subcommands
- Remove insecure HTTP API endpoints (positions, close, close-all, pnl) - Add Unix socket IPC at /tmp/exchange-monitor.sock - Add CLI subcommands: status, close-all, close <COIN>, stop, start - Bind dashboard HTTP to 127.0.0.1:8888 (localhost only)
This commit is contained in:
@@ -18,6 +18,25 @@ import (
|
||||
)
|
||||
|
||||
func main() {
|
||||
// CLI subcommand mode: talk to running daemon via IPC
|
||||
if len(os.Args) > 1 {
|
||||
switch os.Args[1] {
|
||||
case "status", "close-all", "stop", "start":
|
||||
runIPCClient(os.Args[1], "")
|
||||
case "close":
|
||||
if len(os.Args) < 3 {
|
||||
fmt.Fprintln(os.Stderr, "Usage: exchange-monitor close <COIN>")
|
||||
os.Exit(1)
|
||||
}
|
||||
runIPCClient("close", os.Args[2])
|
||||
default:
|
||||
fmt.Fprintf(os.Stderr, "Unknown command: %s\n", os.Args[1])
|
||||
fmt.Fprintln(os.Stderr, "Commands: status, close-all, close <COIN>, stop, start")
|
||||
os.Exit(1)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
|
||||
|
||||
// Set up multi-writer: stdout + log file
|
||||
@@ -52,8 +71,11 @@ func main() {
|
||||
// Initialize trader
|
||||
trader := NewTrader(cfg, database)
|
||||
|
||||
// Initialize dashboard (web server + SSE)
|
||||
dashboard := NewDashboard(store, trader, database, ":8888")
|
||||
// Start Unix socket IPC for CLI commands
|
||||
trader.startIPCServer()
|
||||
|
||||
// Initialize dashboard (web server + SSE) — localhost only for security
|
||||
dashboard := NewDashboard(store, trader, database, "127.0.0.1:8888")
|
||||
go dashboard.Run()
|
||||
|
||||
// Spread window tracker — measures how long spreads stay above threshold
|
||||
|
||||
Reference in New Issue
Block a user