module EventMachine::Protocols::SASLauth

def post_init

def post_init
  super
  @sasl_data = ""
  @sasl_values = []
end

def receive_data data

def receive_data data
  @sasl_data << data
  while @sasl_data.length >= 2
    len = (@sasl_data[0,2].unpack("n")).first
    raise "SASL Max Field Length exceeded" if len > MaxFieldSize
    if @sasl_data.length >= (len + 2)
      @sasl_values << @sasl_data[2,len]
      @sasl_data.slice!(0...(2+len))
      if @sasl_values.length == 4
        send_data( validate(*@sasl_values) ? "\0\002OK" : "\0\002NO" )
        @sasl_values.clear
      end
    else
      break
    end
  end
end

def validate username, psw, sysname, realm

def validate username, psw, sysname, realm
  p username
  p psw
  p sysname
  p realm
  true
end