Sha256: 89576eec7907ef89d21b5e1965f7ef93a9f97e24128c2418fd6fd9fd1a7f4677
Contents?: true
Size: 945 Bytes
Versions: 41
Compression:
Stored size: 945 Bytes
Contents
# frozen_string_literal: true require 'ipaddr' class MiniDefender::Rules::Ip < MiniDefender::Rule MODES = %w[any public private] def initialize(mode = 'any') raise ArgumentError, 'Invalid mode' unless MODES.include?(mode) @mode = mode end def self.signature 'ip' end def self.make(args) new(args[0] || 'any') end def passes?(attribute, value, validator) ip = IPAddr.new(value.to_s) ( @mode == 'any' || @mode == 'private' && (ip.private? || ip.link_local? || ip.loopback?) || @mode == 'public' && !(ip.private? || ip.link_local? || ip.loopback?) ) rescue IPAddr::InvalidAddressError false end def message(attribute, value, validator) case @mode when 'public' "The value must be a valid public IP address." when 'private' "The value must be a valid private IP address." else "The value must be a valid IP address." end end end
Version data entries
41 entries across 41 versions & 1 rubygems