Sha256: e1ebc8614b207d77c8e71bdd3a2a88c037ef9221f1ec2277d2695ed8964c0d07

Contents?: true

Size: 1.7 KB

Versions: 2

Compression:

Stored size: 1.7 KB

Contents

module Hooray
  # App settings
  class Settings
    CONFIG_DIR = ENV['HOME'] + '/.hooray/'

    class << self
      attr_accessor :all

      def no_config_folder
        pa "No config folder, run `#{$PROGRAM_NAME} init`", :red
        puts
        exit 1
      end

      def load!
        no_config_folder unless Dir.exist?(CONFIG_DIR)
        @all = YAML.load_file(CONFIG_DIR + 'settings.yml')
        @services = YAML.load_file(CONFIG_DIR + 'services.yml')
        @devices  = YAML.load_file(CONFIG_DIR + 'devices.yml')
        read_mac_prefixes
      end

      def read_mac_prefixes
        @macs = {}
        File.read(CONFIG_DIR + 'nmap-mac-prefixes').each_line do |line|
          next if line =~ /^\s*#/
          prefix, *name = *line.split(/\s/)
          @macs.store(prefix, name.join(' '))
        end
      end

      def list
        out = 'SCAN: '
        out += ' SYN' if syn_scan
        out += ' SERVICE' if service_scan
        out += ' OS' if os_fingerprint
        out
      end

      def devices
        @devices ||= {}
      end

      def device(mac)
        devices[mac.to_sym] || devices[mac.to_s]
      end

      def services
        @services ||= {}
      end

      def manufacturers
        @macs || {}
      end

      def manufacturer(mac)
        prefix = mac.to_s.gsub(':', '')[0, 6].upcase
        manufacturers[prefix]
      end
      alias_method :family, :manufacturer

      def all
        @all ||= {}
      end

      def method_missing(meth, *params)
        if meth =~ /=/
          all[meth.to_s.gsub('=', '')] = params.first
        else
          arg = meth.to_s.gsub('?', '')
          all[arg] || all[arg.to_sym]
        end
      end
    end # class << self
  end # Settings
end # Hooray

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hooray-0.1.5 lib/hooray/settings.rb
hooray-0.0.9 lib/hooray/settings.rb