50 lines
940 B
Ruby
50 lines
940 B
Ruby
# -*- coding: binary -*-
|
|
|
|
module Msf
|
|
###
|
|
#
|
|
# Enum option.
|
|
#
|
|
###
|
|
class OptEnum < OptBase
|
|
def type
|
|
return 'enum'
|
|
end
|
|
|
|
# This overrides required default from 'false' to 'true'
|
|
def initialize(in_name, attrs = [],
|
|
required: true, desc: nil, default: nil, enums: [], aliases: [])
|
|
super
|
|
end
|
|
|
|
def valid?(value = self.value, check_empty: true)
|
|
return false if check_empty && empty_required_value?(value)
|
|
return true if value.nil? && !required?
|
|
|
|
!value.nil? && enums.include?(value.to_s)
|
|
end
|
|
|
|
def normalize(value = self.value)
|
|
if valid?(value)
|
|
value.to_s
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
|
|
def desc=(value)
|
|
self.desc_string = value
|
|
desc
|
|
end
|
|
|
|
def desc
|
|
str = enums.join(', ') if enums
|
|
"#{desc_string || ''} (Accepted: #{str})"
|
|
end
|
|
|
|
protected
|
|
|
|
attr_accessor :desc_string # :nodoc:
|
|
end
|
|
end
|