Sha256: 3d9219fadb2d590edd7cf0f3e708ac97030efad4f431dca6c1d7c87a1070d2de

Contents?: true

Size: 1.38 KB

Versions: 90

Compression:

Stored size: 1.38 KB

Contents

module ForestLiana
  class IpWhitelist
    @@use_ip_whitelist = true
    @@ip_whitelist_rules = nil

    def self.retrieve
      begin
        response = ForestLiana::ForestApiRequester.get('/liana/v1/ip-whitelist-rules')

        if response.is_a?(Net::HTTPOK)
          body = JSON.parse(response.body)
          ip_whitelist_data = body['data']['attributes']

          @@use_ip_whitelist = ip_whitelist_data['use_ip_whitelist']
          @@ip_whitelist_rules = ip_whitelist_data['rules']
          true
        else
          FOREST_LOGGER.error 'An error occured while retrieving your IP whitelist. Your Forest ' +
            'env_secret seems to be missing or unknown. Can you check that you properly set your ' +
            'Forest env_secret in the forest_liana initializer?'
          false
        end
      rescue => exception
        FOREST_LOGGER.error 'Cannot retrieve the IP Whitelist from the Forest server.'
        FOREST_LOGGER.error 'Which was caused by:'
        ForestLiana::Errors::ExceptionHelper.recursively_print(exception, margin: ' ', is_error: true)
        false
      end
    end

    def self.is_ip_whitelist_retrieved
      !@@use_ip_whitelist || !@@ip_whitelist_rules.nil?
    end

    def self.is_ip_valid(ip)
      if @@use_ip_whitelist
        return ForestLiana::IpWhitelistChecker.is_ip_matches_any_rule(ip, @@ip_whitelist_rules)
      end

      true
    end
  end
end

Version data entries

90 entries across 90 versions & 1 rubygems

Version Path
forest_liana-7.3.0 app/services/forest_liana/ip_whitelist.rb
forest_liana-6.6.3 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.2.2 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.2.1 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.2.0 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.1.0 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.0.2 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.0.1 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.0.0 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.0.0.beta.6 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.0.0.beta.5 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.0.0.beta.4 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.0.0.beta.3 app/services/forest_liana/ip_whitelist.rb
forest_liana-6.6.2 app/services/forest_liana/ip_whitelist.rb
forest_liana-6.6.1 app/services/forest_liana/ip_whitelist.rb
forest_liana-6.6.0 app/services/forest_liana/ip_whitelist.rb
forest_liana-6.5.1 app/services/forest_liana/ip_whitelist.rb
forest_liana-7.0.0.beta.2 app/services/forest_liana/ip_whitelist.rb
forest_liana-6.5.0 app/services/forest_liana/ip_whitelist.rb
forest_liana-6.4.1 app/services/forest_liana/ip_whitelist.rb