Augmente le serial à chaque maj des zones

This commit is contained in:
Benjamin Graillot 2018-12-24 10:46:34 +01:00
parent 47680039aa
commit 7281290057

17
main.py
View file

@ -2,6 +2,7 @@
import argparse import argparse
from configparser import ConfigParser from configparser import ConfigParser
import datetime import datetime
import json
from multiprocessing import Pool from multiprocessing import Pool
import netaddr import netaddr
import os import os
@ -81,12 +82,19 @@ template_reverse = (
"{ptr_records}\n" "{ptr_records}\n"
) )
try:
with open(path + '/serial.json') as serial_json:
serial = json.load(serial_json)
except:
serial = 1
def write_dns_file(zone): def write_dns_file(zone):
global serial
zone_name = zone['name'][1:] zone_name = zone['name'][1:]
now = datetime.datetime.now(datetime.timezone.utc) now = datetime.datetime.now(datetime.timezone.utc)
serial = now.strftime("%Y%m%d") + str(int(100*(now.hour*3600 + now.minute*60 + now.second)/86400)) #serial = now.strftime("%Y%m%d") + str(int(100*(now.hour*3600 + now.minute*60 + now.second)/86400))
soa_mail_fields = zone['soa']['mail'].split('@') soa_mail_fields = zone['soa']['mail'].split('@')
soa_mail = "{}.{}.".format(soa_mail_fields[0].replace('.', '\\.'), soa_mail = "{}.{}.".format(soa_mail_fields[0].replace('.', '\\.'),
@ -411,6 +419,8 @@ if __name__ == '__main__':
if args.force: if args.force:
write_dns_files(api_client, args.processes[0]) write_dns_files(api_client, args.processes[0])
write_dns_reverse_file(api_client) write_dns_reverse_file(api_client)
with open(path + '/serial.json', 'w') as serial_json:
json.dump(serial + 1, serial_json)
if not args.keep: if not args.keep:
for service in api_client.list("services/regen/"): for service in api_client.list("services/regen/"):
if service['hostname'] == client_hostname and \ if service['hostname'] == client_hostname and \
@ -418,14 +428,19 @@ if __name__ == '__main__':
service['need_regen']: service['need_regen']:
api_client.patch(service['api_url'], data={'need_regen': False}) api_client.patch(service['api_url'], data={'need_regen': False})
else: else:
increase_serial = False
for service in api_client.list("services/regen/"): for service in api_client.list("services/regen/"):
if service['hostname'] == client_hostname and \ if service['hostname'] == client_hostname and \
service['service_name'] == 'dns' and \ service['service_name'] == 'dns' and \
service['need_regen']: service['need_regen']:
increase_serial = True
write_dns_files(api_client, args.processes[0]) write_dns_files(api_client, args.processes[0])
write_dns_reverse_file(api_client) write_dns_reverse_file(api_client)
if not args.keep: if not args.keep:
api_client.patch(service['api_url'], data={'need_regen': False}) api_client.patch(service['api_url'], data={'need_regen': False})
if increase_serial:
with open(path + '/serial.json', 'w') as serial_json:
json.dump(serial + 1, serial_json)
if not args.no_reload: if not args.no_reload:
error = os.system('/usr/sbin/knotc zone-reload >/dev/null 2>&1') error = os.system('/usr/sbin/knotc zone-reload >/dev/null 2>&1')