Sha256: 8fc23ca84c6114fd8eb732cc94b3416299dda411e6f1f328edb98ef8df6d6e5a

Contents?: true

Size: 1.89 KB

Versions: 16

Compression:

Stored size: 1.89 KB

Contents

module PatronusFati
  module MessageModels
    # NOTE: If you change these fields the SSID message parser needs to be
    # manually updated since these fields are very broken.
    Ssid = CapStruct.new(
      :mac, :checksum, :type, :ssid, :beaconinfo, :cryptset, :cloaked,
      :maxrate, :beaconrate, :firsttime, :lasttime, :wps, :wps_device_name,
      :wps_manuf, :wps_model_name, :wps_model_number
    )
    Ssid.set_data_filter(:mac) { |val| val.downcase }
    Ssid.set_data_filter(:checksum, :firsttime, :lasttime, :maxrate,
                         :beaconrate) { |val| val.to_i }
    Ssid.set_data_filter(:cloaked) { |val| val.to_i == 1 }
    Ssid.set_data_filter(:cryptset) do |val|
      val = val.to_i
      next [SSID_CRYPT_MAP[0]] if val == 0

      # The WEP bit is always set if the AP is encrypted. If it is the only bit
      # set then the AP is really broadcasting WEP. If it is anything else it
      # is not necessarily not running WEP but WEP will be indicated using the
      # other flags.
      val = val ^ SSID_CRYPT_MAP_INVERTED['WEP'] if val > SSID_CRYPT_MAP_INVERTED['WEP']

      SSID_CRYPT_MAP.select { |k, _| (k & val) != 0 }.map { |_, v| v }
    end
    Ssid.set_data_filter(:wps) do |val|
      next WPS_SETTING_MAP[0] unless val
      val = val.ord

      next WPS_SETTING_MAP[0] if val == 0
      WPS_SETTING_MAP.select { |k, _| (k & val) != 0 }.map { |_, v| v}.first
    end
    Ssid.set_data_filter(:wps_device_name) do |val|
      next if val.nil? || val.empty?
      val
    end

    # Attempt to map the returned SSID type to one we know about it and convert
    # it to a string. In the event we don't know it will leave this as an
    # integer field.
    #
    # @param [String] ssid_type The string is actually an integer value in
    #   numeric form (this is how it's received from the network).
    Ssid.set_data_filter(:type) { |val| SSID_TYPE_MAP[val.to_i] || val.to_i }
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
patronus_fati-1.3.8 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.3.7 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.3.6 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.3.5 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.3.4 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.3.3 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.3.2 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.3.1 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.3.0 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.2.2 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.2.1 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.2.0 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.1.2 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.1.1 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.1.0 lib/patronus_fati/message_models/ssid.rb
patronus_fati-1.0.2 lib/patronus_fati/message_models/ssid.rb