Skip to content

Commit

Permalink
handleUSER reorg
Browse files Browse the repository at this point in the history
  • Loading branch information
fclairamb committed Mar 10, 2024
1 parent 7757ae8 commit d60471d
Showing 1 changed file with 37 additions and 21 deletions.
58 changes: 37 additions & 21 deletions handle_auth.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import (
)

// Handle the "USER" command
func (c *clientHandler) handleUSER(param string) error {
func (c *clientHandler) handleUSER(user string) error {
if verifier, ok := c.server.driver.(MainDriverExtensionUserVerifier); ok {
err := verifier.PreAuthUser(c, param)
err := verifier.PreAuthUser(c, user)

if err != nil {
c.writeMessage(StatusNotLoggedIn, fmt.Sprintf("User rejected: %v", err))
Expand All @@ -26,32 +26,48 @@ func (c *clientHandler) handleUSER(param string) error {
}

if c.HasTLSForControl() {
if verifier, ok := c.server.driver.(MainDriverExtensionTLSVerifier); ok {
if tlsConn, ok := c.conn.(*tls.Conn); ok {
driver, err := verifier.VerifyConnection(c, param, tlsConn)
if c.handleUserTLS(user) {
return nil
}
}

if err != nil {
c.writeMessage(StatusNotLoggedIn, fmt.Sprintf("TLS verification failed: %v", err))
c.disconnect()
c.user = user
c.writeMessage(StatusUserOK, "OK")

return nil
}
return nil
}

if driver != nil {
c.user = param
c.driver = driver
c.writeMessage(StatusUserLoggedIn, "TLS certificate ok, continue")
func (c *clientHandler) handleUserTLS(user string) bool {
verifier, ok := c.server.driver.(MainDriverExtensionTLSVerifier)

return nil
}
}
}
if !ok {
return false

Check warning on line 44 in handle_auth.go

View check run for this annotation

Codecov / codecov/patch

handle_auth.go#L44

Added line #L44 was not covered by tests
}

c.user = param
c.writeMessage(StatusUserOK, "OK")
tlsConn, ok := c.conn.(*tls.Conn)

return nil
if !ok {
return false

Check warning on line 50 in handle_auth.go

View check run for this annotation

Codecov / codecov/patch

handle_auth.go#L50

Added line #L50 was not covered by tests
}

driver, err := verifier.VerifyConnection(c, user, tlsConn)

if err != nil {
c.writeMessage(StatusNotLoggedIn, fmt.Sprintf("TLS verification failed: %v", err))
c.disconnect()

return true
}

if driver != nil {
c.user = user
c.driver = driver
c.writeMessage(StatusUserLoggedIn, "TLS certificate ok, continue")

return true
}

return false
}

// Handle the "PASS" command
Expand Down

0 comments on commit d60471d

Please sign in to comment.