1
0
Fork 0
mirror of https://github.com/eosswedenorg/eth-healthcheck synced 2026-06-18 05:20:02 +02:00
eth-healthcheck/src/cmd/main.go

107 lines
1.9 KiB
Go

package main
import (
"fmt"
"strings"
log "github.com/inconshreveable/log15"
"github.com/pborman/getopt/v2"
"github.com/onrik/ethrpc"
"github.com/eosswedenorg-go/haproxy"
"github.com/eosswedenorg-go/tcp_server"
)
var logger log.Logger
func onConnect(c *tcp_server.Client) {
logger.Info("Client connected", "addr", c.Addr.String())
}
func onTcpMessage(c *tcp_server.Client, message string) {
status := haproxy.HealthCheckDown
client := ethrpc.New(strings.TrimSpace(message))
resp, err := client.EthSyncing()
if err == nil {
if resp.IsSyncing == false {
status = haproxy.HealthCheckUp
}
} else {
logger.Warn(err.Error())
}
logger.Info("Node status", "status", status)
// Report status to HAproxy
c.WriteString(fmt.Sprintln(status))
c.Close()
}
func onDisconnect(c *tcp_server.Client, err error) {
if err == nil {
logger.Info("Client disconnected", "addr", c.Addr.String())
} else {
logger.Warn("Client disconnected", "addr", c.Addr.String(), "err", err)
}
}
func argv_listen_addr() string {
var addr string
argv := getopt.Args()
if len(argv) > 0 {
addr = argv[0]
} else {
addr = "127.0.0.1"
}
addr += ":"
if len(argv) > 1 {
addr += argv[1]
} else {
addr += "1301"
}
return addr
}
func main() {
var printVersion bool;
var printUsage bool;
getopt.FlagLong(&printUsage, "help", 'h', "Print this help text")
getopt.FlagLong(&printVersion, "version", 'v', "Print version")
getopt.Parse()
if printUsage {
getopt.Usage()
return
}
if printVersion {
print("Version: v0.1.0\n")
return
}
logger = log.New()
addr := argv_listen_addr()
server := tcp_server.New(argv_listen_addr())
logger.Info(fmt.Sprintf("Listening on: %s", addr))
// TCP Client sends message.
server.OnConnect(onConnect)
server.OnMessage(onTcpMessage)
server.OnDisconnect(onDisconnect)
err := server.Listen()
if err != nil {
logger.Error(err.Error())
}
}