Sha256: ce35531662365c0f93db5ac5fd245bd88b725869bae65de0cff7944abf781ea2

Contents?: true

Size: 1.42 KB

Versions: 113

Compression:

Stored size: 1.42 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_REPORTER.report 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

113 entries across 113 versions & 1 rubygems

Version Path
forest_liana-9.10.4 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.10.3 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.10.2 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.10.1 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.10.0 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.9.1 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.9.0 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.8.0 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.7.0 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.6.4 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.6.3 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.6.0 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.5.7 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.5.6 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.5.5 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.5.4 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.5.3 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.5.2 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.5.1 app/services/forest_liana/ip_whitelist.rb
forest_liana-9.5.0 app/services/forest_liana/ip_whitelist.rb