Add hook system
This commit is contained in:
@@ -27,6 +27,7 @@ def main():
|
||||
parser.add_argument('-A', '--all-types', help='allow unsupported record types', action='store_true')
|
||||
parser.add_argument('-b', '--batch', help='run in batch mode (no user input)', action='store_true')
|
||||
parser.add_argument('-c', '--config', help='path to config file', default=DEFAULT_CFGFILE)
|
||||
parser.add_argument('-n', '--no-hooks', action='store_true', help='skip hook execution')
|
||||
parser.add_argument('zone', metavar='ZONE[@VIEWS]', nargs=nargs, help='DNS zone name and optional list of views (comma separated or asterisk to select all views)', default=None)
|
||||
parser.add_argument('name', metavar='NAME', nargs=nargs, help='DNS record name, @ refers to zone apex', default=None)
|
||||
parser.add_argument('type', metavar='TYPE', nargs=nargs, help='DNS record type', default=None)
|
||||
@@ -129,14 +130,21 @@ def main():
|
||||
sys.exit(0)
|
||||
|
||||
for zone in zones:
|
||||
node = zone.find_node(name)
|
||||
rdataset = node.find_rdataset(dns.rdataclass.IN, rdtype)
|
||||
|
||||
if not args.no_hooks:
|
||||
try:
|
||||
manager.run_record_hooks('delete', 'pre', zone, name, rdataset, args.batch)
|
||||
except RuntimeError as e:
|
||||
printe(e)
|
||||
sys.exit(190)
|
||||
|
||||
origin = zone.origin.to_text(omit_final_dot=True)
|
||||
if len(zones) > 1 or zone.view != NAMED_DEFAULT_VIEW:
|
||||
origin = f'{origin}@{zone.view}'
|
||||
print(f"Sending DDNS updates for '{origin}'... ", end='')
|
||||
|
||||
node = zone.find_node(name)
|
||||
rdataset = node.find_rdataset(dns.rdataclass.IN, rdtype)
|
||||
|
||||
try:
|
||||
manager.delete_zone_record(zone, name, rdataset)
|
||||
print('OK')
|
||||
@@ -144,6 +152,12 @@ def main():
|
||||
printe(e)
|
||||
sys.exit(160)
|
||||
|
||||
if not args.no_hooks:
|
||||
try:
|
||||
manager.run_record_hooks('delete', 'post', zone, name, rdataset, args.batch)
|
||||
except RuntimeError as e:
|
||||
printe(e)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user