Sha256: ea4465604c939892221b8b8af25247c31af4f5e8285f679712d493b01f3a690c

Contents?: true

Size: 1.3 KB

Versions: 6

Compression:

Stored size: 1.3 KB

Contents

require 'puppet-lint'
require_relative 'rules/rule'
require_relative 'rules/hard_coded_credentials_rule'
require_relative 'rules/no_http_rule'
require_relative 'rules/admin_by_default_rule'
require_relative 'rules/empty_password_rule'
require_relative 'rules/invalid_ip_addr_binding_rule'
require_relative 'rules/suspicious_comment_rule'
require_relative 'rules/use_weak_crypto_algorithms_rule'
require_relative 'rules/cyrillic_homograph_attack'


class RuleEngine
  @rules=[HardCodedCredentialsRule,NoHTTPRule,AdminByDefaultRule,EmptyPasswordRule,InvalidIPAddrBindingRule,UseWeakCryptoAlgorithmsRule,SuspiciousCommentRule,CyrillicHomographAttack]

  class << self
    attr_accessor :rules
  end

  def self.getTokens(code)
    begin
      lexer = PuppetLint::Lexer.new
      tokens = lexer.tokenise(code)
    rescue => error
      $logger.error("Error in getting tokens from Puppet-Lint")
      $logger.error(error.backtrace)
      tokens = []
    end

    return tokens
  end

  def self.analyzeDocument(code)
    result=[]
    tokens = self.getTokens(code)

    @rules.each do |rule|
      begin
        if rule.configurations[0].value
          (result << rule.AnalyzeTokens(tokens)).flatten!
        end
      rescue
        $logger.error("Error in running rule #{rule.name}")
      end
    end

    return result
  end

end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
puppet-sec-lint-1.0.0 lib/rule_engine.rb
puppet-sec-lint-0.5.17 lib/rule_engine.rb
puppet-sec-lint-0.5.16 lib/rule_engine.rb
puppet-sec-lint-0.5.15 lib/rule_engine.rb
puppet-sec-lint-0.5.14 lib/rule_engine.rb
puppet-sec-lint-0.5.13 lib/rule_engine.rb