mirror of
https://github.com/drakkan/sftpgo.git
synced 2025-12-07 14:50:55 +03:00
defender: implement logging of events and bans (#1495)
defender: implement logging of events and bans Signed-off-by: Anthrazz <25553648+Anthrazz@users.noreply.github.com>
This commit is contained in:
@@ -19,17 +19,18 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/drakkan/sftpgo/v2/internal/dataprovider"
|
||||
"github.com/drakkan/sftpgo/v2/internal/logger"
|
||||
)
|
||||
|
||||
// HostEvent is the enumerable for the supported host events
|
||||
type HostEvent int
|
||||
type HostEvent string
|
||||
|
||||
// Supported host events
|
||||
const (
|
||||
HostEventLoginFailed HostEvent = iota
|
||||
HostEventUserNotFound
|
||||
HostEventNoLoginTried
|
||||
HostEventLimitExceeded
|
||||
HostEventLoginFailed HostEvent = "LoginFailed"
|
||||
HostEventUserNotFound = "UserNotFound"
|
||||
HostEventNoLoginTried = "NoLoginTried"
|
||||
HostEventLimitExceeded = "LimitExceeded"
|
||||
)
|
||||
|
||||
// Supported defender drivers
|
||||
@@ -132,6 +133,36 @@ func (d *baseDefender) getScore(event HostEvent) int {
|
||||
return score
|
||||
}
|
||||
|
||||
// logEvent do log an defender event which modifies the score of an host
|
||||
func (d *baseDefender) logEvent(ip, protocol string, event HostEvent, totalScore int) {
|
||||
// ignore events which do not change the host score
|
||||
eventScore := d.getScore(event)
|
||||
if eventScore == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
logger.GetLogger().Debug().
|
||||
Timestamp().
|
||||
Str("sender", "defender").
|
||||
Str("client_ip", ip).
|
||||
Str("protocol", protocol).
|
||||
Str("event", string(event)).
|
||||
Int("increase_score_by", eventScore).
|
||||
Int("score", totalScore).
|
||||
Send()
|
||||
}
|
||||
|
||||
// logBan do log a ban of an host due to a too high host score
|
||||
func (d *baseDefender) logBan(ip, protocol string) {
|
||||
logger.GetLogger().Info().
|
||||
Timestamp().
|
||||
Str("sender", "defender").
|
||||
Str("client_ip", ip).
|
||||
Str("protocol", protocol).
|
||||
Str("event", "banned").
|
||||
Send()
|
||||
}
|
||||
|
||||
type hostEvent struct {
|
||||
dateTime time.Time
|
||||
score int
|
||||
|
||||
Reference in New Issue
Block a user