Hector 556c09c2f4 fix handling of ping response
Update the code handling sending the ping command to the fail2ban server
to correctly handle the response. The response is of type `Tupple`, not
`[]string`.
2021-08-29 11:26:40 +01:00

43 lines
838 B
Go

package socket
import (
"log"
"net"
"github.com/kisielk/og-rek"
"github.com/nlpodyssey/gopickle/types"
)
type Fail2BanSocket struct {
socket net.Conn
encoder *ogórek.Encoder
}
func MustConnectToSocket(path string) *Fail2BanSocket {
c, err := net.Dial("unix", path)
if err != nil {
log.Fatalf("failed to open fail2ban socket: %v", err)
}
return &Fail2BanSocket{
socket: c,
encoder: ogórek.NewEncoder(c),
}
}
func (s *Fail2BanSocket) Ping() bool {
response, err := s.sendCommand([]string{pingCommand, "100"})
if err != nil {
log.Printf("server ping failed: %v", err)
return false
}
if t, ok := response.(*types.Tuple); ok {
if (*t)[1] == "pong" {
return true
}
log.Printf("unexpected response data: %s", t)
}
log.Printf("unexpected response format - cannot parse: %v", response)
return false
}