Add hook system

This commit is contained in:
2026-07-19 02:30:26 +02:00
parent b73f303b4d
commit 33ff828b83
8 changed files with 197 additions and 3 deletions
+17 -3
View File
@@ -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()