blob: 2d5753ac14bbd0d317bbb06194274da12dcff6bb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
#!/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)
|