From 2e5ef85db3cbfb362d7314d197d6866819bcb019 Mon Sep 17 00:00:00 2001 From: Lars Beckers <lars.beckers@rwth-aachen.de> Date: Mon, 3 Dec 2018 16:49:14 +0100 Subject: [PATCH] zonedl: compat with new dnsadmin portal design --- zonedl.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/zonedl.py b/zonedl.py index 795e4cb..d6e3716 100755 --- a/zonedl.py +++ b/zonedl.py @@ -19,7 +19,7 @@ parser.add_argument('dest', action='store', default='-', help='destination to st args = parser.parse_args() DNS_ADMIN = 'https://noc-portal.rz.rwth-aachen.de/dnsadmin' -ZONE_FILE = 'https://noc-portal.rz.rwth-aachen.de/dnsadmin/zones/{}/print' +ZONE_FILE = 'https://noc-portal.rz.rwth-aachen.de/dnsadmin/zones/{}-{}/pre_deploy_preview' SHIB_PREFIX = 'https://sso.rwth-aachen.de' SHIB_AUTH = 'https://sso.rwth-aachen.de/idp/profile/SAML2/Redirect/SSO' SHIB_REDIRECT = 'https://noc-portal.rz.rwth-aachen.de/Shibboleth.sso/SAML2/POST' @@ -44,17 +44,17 @@ def get_zones(session): for zone in z.find_all('tr'): a = zone.find('td').find('a') #d[int(a['href'].split('/')[-1])] = a.text - d[a.text] = int(a['href'].split('/')[-1]) + d[a.text] = int(a['href'].split('/')[-1].split('-', maxsplit=1)[0]) return d def get_zone_file(session, zone): - r = session.get(ZONE_FILE.format(str(zone))) + r = session.get(ZONE_FILE.format(str(zone[0]), str(zone[1].replace('.', '-')))) if r.url.startswith(SHIB_AUTH): res,session,r = shib_auth(session, r) if not res: return '' b = bs4.BeautifulSoup(r.text, 'lxml') - t = b.find(id='extra-wrapper').find('span').text + t = b.find(id='content-wrapper').find('div', class_='zone-content').text return t.replace('<br>', '').replace('\n\n', '\n') # \n def shib_auth(session, resp, iterations=0): @@ -108,21 +108,23 @@ wanted = [] if args.domain: for k in d: if k in args.domain: - wanted.append(d[k]) + wanted.append((d[k], k)) for a in args.domain: if a not in d: print('Domain {} is not available, skipping'.format(a), file=sys.stderr) else: + zones = [] for k in d: if d[k] in args.zone: - wanted.append(d[k]) + wanted.append((d[k], k)) + zones.append(d[k]) for a in args.zone: - if a not in wanted: + if a not in zones: print('Zone {} is not available, skipping'.format(a), file=sys.stderr) if fp is None: for w in wanted: - with open(str(Path(args.dest) / str(w)), 'w') as fp: + with open(str(Path(args.dest) / str(w[0])), 'w') as fp: fp.write(get_zone_file(s, w)) else: for w in wanted: -- GitLab