1
0
Fork 0
mirror of https://github.com/eosswedenorg/eth-healthcheck synced 2026-06-20 09:56:51 +02:00

Inital Commit

This commit is contained in:
Henrik Hautakoski 2021-08-13 12:59:22 +02:00
commit 0d27205c7c
15 changed files with 472 additions and 0 deletions

91
src/cmd/main.go Normal file
View file

@ -0,0 +1,91 @@
package main
import (
"fmt"
"strings"
log "github.com/inconshreveable/log15"
"github.com/pborman/getopt/v2"
"github.com/onrik/ethrpc"
"internal/haproxy"
"internal/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() {
logger = log.New()
getopt.Parse()
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())
}
}