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