diff --git a/command/command.go b/command/command.go index 73927b9c..78c2d739 100644 --- a/command/command.go +++ b/command/command.go @@ -12,6 +12,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . +// Package command provides command configuration for SFTPGo hooks package command import ( diff --git a/common/common.go b/common/common.go index d84bcb4a..4625004d 100644 --- a/common/common.go +++ b/common/common.go @@ -862,6 +862,15 @@ func (conns *ActiveConnections) Remove(connectionID string) { metric.UpdateActiveConnectionsSize(lastIdx) logger.Debug(conn.GetProtocol(), conn.GetID(), "connection removed, local address %#v, remote address %#v close fs error: %v, num open connections: %v", conn.GetLocalAddress(), conn.GetRemoteAddress(), err, lastIdx) + if conn.GetProtocol() == ProtocolFTP && conn.GetUsername() == "" { + ip := util.GetIPFromRemoteAddress(conn.GetRemoteAddress()) + logger.ConnectionFailedLog("", ip, dataprovider.LoginMethodNoAuthTryed, conn.GetProtocol(), + dataprovider.ErrNoAuthTryed.Error()) + metric.AddNoAuthTryed() + AddDefenderEvent(ip, HostEventNoLoginTried) + dataprovider.ExecutePostLoginHook(&dataprovider.User{}, dataprovider.LoginMethodNoAuthTryed, ip, + conn.GetProtocol(), dataprovider.ErrNoAuthTryed) + } Config.checkPostDisconnectHook(conn.GetRemoteAddress(), conn.GetProtocol(), conn.GetUsername(), conn.GetID(), conn.GetConnectionTime()) return @@ -950,19 +959,11 @@ func (conns *ActiveConnections) checkIdles() { isUnauthenticatedFTPUser := (c.GetProtocol() == ProtocolFTP && c.GetUsername() == "") if idleTime > Config.idleTimeoutAsDuration || (isUnauthenticatedFTPUser && idleTime > Config.idleLoginTimeout) { - defer func(conn ActiveConnection, isFTPNoAuth bool) { + defer func(conn ActiveConnection) { err := conn.Disconnect() logger.Debug(conn.GetProtocol(), conn.GetID(), "close idle connection, idle time: %v, username: %#v close err: %v", time.Since(conn.GetLastActivity()), conn.GetUsername(), err) - if isFTPNoAuth { - ip := util.GetIPFromRemoteAddress(c.GetRemoteAddress()) - logger.ConnectionFailedLog("", ip, dataprovider.LoginMethodNoAuthTryed, c.GetProtocol(), "client idle") - metric.AddNoAuthTryed() - AddDefenderEvent(ip, HostEventNoLoginTried) - dataprovider.ExecutePostLoginHook(&dataprovider.User{}, dataprovider.LoginMethodNoAuthTryed, ip, c.GetProtocol(), - dataprovider.ErrNoAuthTryed) - } - }(c, isUnauthenticatedFTPUser) + }(c) } } diff --git a/httpclient/httpclient.go b/httpclient/httpclient.go index 8618693e..3c10617c 100644 --- a/httpclient/httpclient.go +++ b/httpclient/httpclient.go @@ -12,6 +12,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . +// Package httpclient provides HTTP client configuration for SFTPGo hooks package httpclient import ( diff --git a/version/version.go b/version/version.go index de26c926..c059747a 100644 --- a/version/version.go +++ b/version/version.go @@ -12,6 +12,7 @@ // You should have received a copy of the GNU Affero General Public License // along with this program. If not, see . +// Package version defines SFTPGo version details package version import "strings"