import ipaddr
-class NsupdateError(Exception):
+class ExternalProgramError(RuntimeError):
+ pass
+
+
+class NsupdateError(ExternalProgramError):
def __init__(self, returncode):
self.returncode = returncode
-class BlockipError(Exception):
+class BlockipError(ExternalProgramError):
def __init__(self, returncode):
self.returncode = returncode
"""
:param ip: ipv4 address
:raises a BlockipError in case of errors."""
- command = "iptables -I blockip -s {ip} -j ACCEPT".format(ip=ip)
- p = call(command, shell=True)
+ command = ['iptables', '-I', 'blockip', '-s', str(ip), '-j', 'ACCEPT']
+ p = call(command)
if p != 0:
raise BlockipError(p)
"""
:param ip: ipv4 address
:raises a BlockipError in case of errors."""
- command = "iptables -D blockip -s {ip} -j ACCEPT".format(ip=ip)
- p = call(command, shell=True)
+ command = ['iptables', '-D', 'blockip', '-s', str(ip), '-j', 'ACCEPT']
+ p = call(command)
if p != 0:
raise BlockipError(p)
nsupdate_add(args.fqdn, args.ttl, args.ip)
if ipfamily_by_ip(args.ip) == 'A':
blockip_whitelist_add(args.ip)
- except NsupdateError as e:
+ except ExternalProgramError as e:
sys.exit(e.returncode)