Sha256: 2adea26268f30b15ba9665284f9b67af7bb6fe85a5e8ce7158f3afeeb921f5dd

Contents?: true

Size: 1.41 KB

Versions: 10

Compression:

Stored size: 1.41 KB

Contents

# frozen_string_literal: true

# Authenticator for the "+LOGIN+" SASL mechanism.  See Net::IMAP#authenticate.
#
# +LOGIN+ authentication sends the password in cleartext.
# RFC3501[https://tools.ietf.org/html/rfc3501] encourages servers to disable
# cleartext authentication until after TLS has been negotiated.
# RFC8314[https://tools.ietf.org/html/rfc8314] recommends TLS version 1.2 or
# greater be used for all traffic, and deprecate cleartext access ASAP.  +LOGIN+
# can be secured by TLS encryption.
#
# == Deprecated
#
# The {SASL mechanisms
# registry}[https://www.iana.org/assignments/sasl-mechanisms/sasl-mechanisms.xhtml]
# marks "LOGIN" as obsoleted in favor of "PLAIN".  It is included here for
# compatibility with existing servers.  See
# {draft-murchison-sasl-login}[https://www.iana.org/go/draft-murchison-sasl-login]
# for both specification and deprecation.
class Net::IMAP::LoginAuthenticator
  def process(data)
    case @state
    when STATE_USER
      @state = STATE_PASSWORD
      return @user
    when STATE_PASSWORD
      return @password
    end
  end

  private

  STATE_USER = :USER
  STATE_PASSWORD = :PASSWORD

  def initialize(user, password, warn_deprecation: true, **_ignored)
    if warn_deprecation
      warn "WARNING: LOGIN SASL mechanism is deprecated. Use PLAIN instead."
    end
    @user = user
    @password = password
    @state = STATE_USER
  end

  Net::IMAP.add_authenticator "LOGIN", self
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
net-imap-0.3.8 lib/net/imap/authenticators/login.rb
net-imap-0.3.4.1 lib/net/imap/authenticators/login.rb
net-imap-0.3.7 lib/net/imap/authenticators/login.rb
net-imap-0.3.6 lib/net/imap/authenticators/login.rb
net-imap-0.3.5 lib/net/imap/authenticators/login.rb
net-imap-0.3.4 lib/net/imap/authenticators/login.rb
net-imap-0.3.3 lib/net/imap/authenticators/login.rb
net-imap-0.3.2 lib/net/imap/authenticators/login.rb
net-imap-0.3.1 lib/net/imap/authenticators/login.rb
net-imap-0.3.0 lib/net/imap/authenticators/login.rb