add OptFloat datastore option
parent
331279d891
commit
47dc3772a7
|
@ -0,0 +1,24 @@
|
||||||
|
# -*- coding: binary -*-
|
||||||
|
|
||||||
|
module Msf
|
||||||
|
###
|
||||||
|
#
|
||||||
|
# Float option.
|
||||||
|
#
|
||||||
|
###
|
||||||
|
class OptFloat < OptBase
|
||||||
|
def type
|
||||||
|
'float'
|
||||||
|
end
|
||||||
|
|
||||||
|
def normalize(value)
|
||||||
|
Float(value) if value.present? && valid?(value)
|
||||||
|
end
|
||||||
|
|
||||||
|
def valid?(value, check_empty: true)
|
||||||
|
return false if check_empty && empty_required_value?(value)
|
||||||
|
Float(value) rescue return false if value.present?
|
||||||
|
super
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -12,6 +12,7 @@ module Msf
|
||||||
autoload :OptBool, 'msf/core/opt_bool'
|
autoload :OptBool, 'msf/core/opt_bool'
|
||||||
autoload :OptEnum, 'msf/core/opt_enum'
|
autoload :OptEnum, 'msf/core/opt_enum'
|
||||||
autoload :OptInt, 'msf/core/opt_int'
|
autoload :OptInt, 'msf/core/opt_int'
|
||||||
|
autoload :OptFloat, 'msf/core/opt_float'
|
||||||
autoload :OptPath, 'msf/core/opt_path'
|
autoload :OptPath, 'msf/core/opt_path'
|
||||||
autoload :OptPort, 'msf/core/opt_port'
|
autoload :OptPort, 'msf/core/opt_port'
|
||||||
autoload :OptRaw, 'msf/core/opt_raw'
|
autoload :OptRaw, 'msf/core/opt_raw'
|
||||||
|
@ -35,6 +36,7 @@ module Msf
|
||||||
# * {OptAddress} - IP address or hostname
|
# * {OptAddress} - IP address or hostname
|
||||||
# * {OptPath} - Path name on disk or an Object ID
|
# * {OptPath} - Path name on disk or an Object ID
|
||||||
# * {OptInt} - An integer value
|
# * {OptInt} - An integer value
|
||||||
|
# * {OptFloat} - A float value
|
||||||
# * {OptEnum} - Select from a set of valid values
|
# * {OptEnum} - Select from a set of valid values
|
||||||
# * {OptAddressRange} - A subnet or range of addresses
|
# * {OptAddressRange} - A subnet or range of addresses
|
||||||
# * {OptRegexp} - Valid Ruby regular expression
|
# * {OptRegexp} - Valid Ruby regular expression
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
# -*- coding:binary -*-
|
||||||
|
|
||||||
|
require 'spec_helper'
|
||||||
|
require 'msf/core/option_container'
|
||||||
|
|
||||||
|
RSpec.describe Msf::OptFloat do
|
||||||
|
valid_values = [
|
||||||
|
{ :value => "1", :normalized => 1.0 },
|
||||||
|
{ :value => "1.1", :normalized => 1.1 },
|
||||||
|
{ :value => "0", :normalized => 0.0 },
|
||||||
|
{ :value => "-1", :normalized => -1.0 },
|
||||||
|
{ :value => "01", :normalized => 1.0 },
|
||||||
|
{ :value => "0xff", :normalized => 255.0 },
|
||||||
|
]
|
||||||
|
invalid_values = [
|
||||||
|
{ :value => "0xblah", },
|
||||||
|
{ :value => "-12cat", },
|
||||||
|
{ :value => "covfefe", },
|
||||||
|
{ :value => "NaN", },
|
||||||
|
]
|
||||||
|
|
||||||
|
it_behaves_like "an option", valid_values, invalid_values, 'float'
|
||||||
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue