Blame | Last modification | View Log | RSS feed
#!/usr/bin/fail2ban-python# Inspired by https://isc.sans.edu/forums/diary/When+Google+isnt+Google/15968/## Written in Python to reuse built-in Python batteries and not depend on# presence of host and cut commands#import sysfrom fail2ban.server.ipdns import DNSUtils, IPAddrdef process_args(argv):if len(argv) != 2:raise ValueError("Please provide a single IP as an argument. Got: %s\n"% (argv[1:]))ip = argv[1]if not IPAddr(ip).isValid:raise ValueError("Argument must be a single valid IP. Got: %s\n"% ip)return ipgoogle_ips = Nonedef is_googlebot(ip):import rehost = DNSUtils.ipToName(ip)if not host or not re.match(r'.*\.google(bot)?\.com$', host):return Falsehost_ips = DNSUtils.dnsToIp(host)return (ip in host_ips)if __name__ == '__main__': # pragma: no covertry:ret = is_googlebot(process_args(sys.argv))except ValueError as e:sys.stderr.write(str(e))sys.exit(2)sys.exit(0 if ret else 1)