lib/ftpd/cmd_prot.rb
# frozen_string_literal: true
require_relative 'command_handler'
module Ftpd
class CmdProt < CommandHandler
def cmd_prot(level_arg)
level_code = level_arg.upcase
unless protection_buffer_size_set
error "PROT must be preceded by PBSZ", 503
end
level = DATA_CHANNEL_PROTECTION_LEVELS[level_code]
unless level
error "Unknown protection level", 504
end
unless level == :private
error "Unsupported protection level #{level}", 536
end
self.data_channel_protection_level = level
reply "200 Data protection level #{level_code}"
end
private
DATA_CHANNEL_PROTECTION_LEVELS = {
'C'=>:clear,
'S'=>:safe,
'E'=>:confidential,
'P'=>:private
}
end
end