
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`.
43 lines
838 B
Go
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
|
|
}
|