Exemple #1
0
def check_ip_access(source_ip, allowed_ips=None):
    """
    Checks if source_ip is a subnet of any of allowed_ips.

    :param source_ip:
    :param allowed_ips: list of allowed ips together with mask
    """
    from kallithea.lib import ipaddr
    log.debug('checking if ip:%s is subnet of %s' % (source_ip, allowed_ips))
    if isinstance(allowed_ips, (tuple, list, set)):
        for ip in allowed_ips:
            if ipaddr.IPAddress(source_ip) in ipaddr.IPNetwork(ip):
                log.debug('IP %s is network %s' %
                          (ipaddr.IPAddress(source_ip), ipaddr.IPNetwork(ip)))
                return True
    return False
 def validate_python(self, value, state):
     try:
         addr = value.strip()
         #this raises an ValueError if address is not IPv4 or IPv6
         ipaddr.IPNetwork(address=addr)
     except ValueError:
         raise formencode.Invalid(self.message('badFormat', state),
                                  value, state)
 def to_python(self, value, state):
     v = super(_validator, self).to_python(value, state)
     v = v.strip()
     net = ipaddr.IPNetwork(address=v)
     if isinstance(net, ipaddr.IPv4Network):
         #if IPv4 doesn't end with a mask, add /32
         if '/' not in value:
             v += '/32'
     if isinstance(net, ipaddr.IPv6Network):
         #if IPv6 doesn't end with a mask, add /128
         if '/' not in value:
             v += '/128'
     return v