class RIMS::Protocol::AuthenticationReader
Public Class Methods
new(auth, input_gets, output_write, logger)
click to toggle source
# File lib/rims/protocol/parser.rb, line 189 def initialize(auth, input_gets, output_write, logger) @auth = auth @input_gets = input_gets @output_write = output_write @logger = logger end
Public Instance Methods
authenticate_client(auth_type, inline_client_response_data_base64=nil)
click to toggle source
# File lib/rims/protocol/parser.rb, line 196 def authenticate_client(auth_type, inline_client_response_data_base64=nil) username = case (auth_type.downcase) when 'plain' @logger.debug("authentication mechanism: plain") if @logger.debug? authenticate_client_plain(inline_client_response_data_base64) when 'cram-md5' @logger.debug("authentication mechanism: cram-md5") if @logger.debug? authenticate_client_cram_md5 else nil end case (username) when String @logger.debug("authenticated #{username}.") if @logger.debug? username when Symbol @logger.debug('no authentication.') if @logger.debug? username else @logger.debug('unauthenticated.') if @logger.debug? nil end end
Private Instance Methods
authenticate_client_cram_md5()
click to toggle source
# File lib/rims/protocol/parser.rb, line 265 def authenticate_client_cram_md5 server_challenge_data = @auth.cram_md5_server_challenge_data case (client_response_data = read_client_response_data(server_challenge_data)) when String @auth.authenticate_cram_md5(server_challenge_data, client_response_data) when Symbol client_response_data else nil end end
authenticate_client_plain(inline_client_response_data_base64)
click to toggle source
# File lib/rims/protocol/parser.rb, line 253 def authenticate_client_plain(inline_client_response_data_base64) case (client_response_data = read_client_response_data_plain(inline_client_response_data_base64)) when String @auth.authenticate_plain(client_response_data) when Symbol client_response_data else nil end end
read_client_response_data(server_challenge_data=nil)
click to toggle source
# File lib/rims/protocol/parser.rb, line 221 def read_client_response_data(server_challenge_data=nil) if (server_challenge_data) then server_challenge_data_base64 = Protocol.encode_base64(server_challenge_data) @logger.debug("authenticate command: server challenge data: #{Protocol.io_data_log(server_challenge_data_base64)}") if @logger.debug? @output_write.call([ "+ #{server_challenge_data_base64}\r\n" ]) else @logger.debug("authenticate command: server challenge data is nil.") if @logger.debug? @output_write.call([ "+ \r\n" ]) end if (client_response_data_base64 = @input_gets.call) then client_response_data_base64.strip! @logger.debug("authenticate command: client response data: #{Protocol.io_data_log(client_response_data_base64)}") if @logger.debug? if (client_response_data_base64 == '*') then @logger.debug("authenticate command: no authentication from client.") if @logger.debug? return :* end Protocol.decode_base64(client_response_data_base64) end end
read_client_response_data_plain(inline_client_response_data_base64)
click to toggle source
# File lib/rims/protocol/parser.rb, line 243 def read_client_response_data_plain(inline_client_response_data_base64) if (inline_client_response_data_base64) then @logger.debug("authenticate command: inline client response data: #{Protocol.io_data_log(inline_client_response_data_base64)}") if @logger.debug? Protocol.decode_base64(inline_client_response_data_base64) else read_client_response_data end end