#!/usr/bin/env python3 import datetime, json, os.path, sys base_dir = sys.argv[1] serial_num = lambda n: f'{today}{n:02}' today_str = datetime.datetime.utcnow().date().strftime('%Y%m%d') today = int(today_str) paths = [] for zone, data in json.load(sys.stdin).items(): expected_hash = data['expected'] old_serial_int = data['serial'] new_serial = serial_num(0) if old_serial_int is not None: old_serial = str(old_serial_int) if len(old_serial) > len(new_serial): new_serial = None elif len(old_serial) == len(new_serial): old_day = int(old_serial[:len(today_str)]) if old_day >= today: new_serial = None if new_serial is None: new_serial = str(old_serial_int + 1) path = os.path.join(base_dir, zone, 'serial.nix') with open(os.path.join(base_dir, zone, 'serial.nix'), 'w') as serial_file: print(f'''\ {{ config = {{ soa.serial = {new_serial}; nullSerialHash = "{expected_hash}"; }}; }} ''', file=serial_file) paths.append(path) # Se imprime al final para evitar estados intermedios si algo tira excepción for path in paths: print(path)