#
# Standard Library
#

require 'fileutils'

#
# Metasploit gem engines
#

require 'metasploit/model/engine'
require 'metasploit/concern/engine'
require 'metasploit/framework/require'
Metasploit::Framework::Require.optionally_require_metasploit_db_gem_engines

# `Rails::Engine` behavior common to both {Metasploit::Framework::Application} and {Metasploit::Framework::Engine}.
module Metasploit::Framework::CommonEngine
  extend ActiveSupport::Concern

  included do
    #
    # config
    #

    # Force binary encoding to remove necessity to set external and internal encoding when construct Strings from
    # from files.  Socket#read always returns a String in ASCII-8bit encoding
    #
    # @see http://rubydoc.info/stdlib/core/IO:read
    config.before_initialize do
      encoding = 'binary'
      ::Encoding.default_external = encoding
      ::Encoding.default_internal = encoding
    end

    config.root = Msf::Config::install_root
    config.paths.add 'app/models', autoload: true
    config.paths.add 'app/concerns', autoload: true
    config.paths.add 'data/meterpreter', glob: '**/ext_*'
    config.paths.add 'modules'

    config.active_support.deprecation = :stderr

    if ActiveRecord.respond_to?(:legacy_connection_handling=)
      ActiveRecord.legacy_connection_handling = false
    end
    #
    # `initializer`s
    #


  end

end
