#!/usr/bin/python3

# Author: Paul Wise <pabs@debian.org>
# License: MIT/Expat

import os
import sys
import ldap

hosts_dir = os.path.expanduser('~/backup/hosts')

aliases = []

l = ldap.initialize('ldaps://db.debian.org')
r = l.search_s('ou=hosts,dc=debian,dc=org',ldap.SCOPE_SUBTREE,'(purpose=porterbox)',['architecture','access','host','hostname'])
for dn,e in r:
	port_alias = '%s.port.debian.org' % e['architecture'][0].decode('UTF-8')
	port_link = os.path.join(hosts_dir, port_alias)
	try:
		os.remove(port_link)
	except FileNotFoundError:
		pass
	os.symlink(e['hostname'][0], os.path.join(hosts_dir, port_alias))
	aliases.append('# https://db.debian.org/machines.cgi?host=%s' % e['host'][0].decode('UTF-8'))
	aliases.append('Host %s' % port_alias)
	aliases.append(' HostKeyAlias %s' % e['hostname'][0].decode('UTF-8'))
	aliases.append(' HostName %s' % e['hostname'][0].decode('UTF-8'))
del l, r

with open(os.path.expanduser('~/.ssh/config.d/debian.org-porterboxen'), 'w') as f:
	 f.write('\n'.join(aliases))
