method
parse228
parse228(resp)
private
Hide source
# File lib/net/ftp.rb, line 898 def parse228(resp) if resp[0, 3] != "228" raise FTPReplyError, resp end left = resp.index("(") right = resp.index(")") if left == nil or right == nil raise FTPProtoError, resp end numbers = resp[left + 1 .. right - 1].split(",") if numbers[0] == "4" if numbers.length != 9 || numbers[1] != "4" || numbers[2 + 4] != "2" raise FTPProtoError, resp end host = numbers[2, 4].join(".") port = (numbers[7].to_i << 8) + numbers[8].to_i elsif numbers[0] == "6" if numbers.length != 21 || numbers[1] != "16" || numbers[2 + 16] != "2" raise FTPProtoError, resp end v6 = ["", "", "", "", "", "", "", ""] for i in 0 .. 7 v6[i] = sprintf("%02x%02x", numbers[(i * 2) + 2].to_i, numbers[(i * 2) + 3].to_i) end host = v6[0, 8].join(":") port = (numbers[19].to_i << 8) + numbers[20].to_i end return host, port end