diff options
Diffstat (limited to 'retiolum/bin')
-rwxr-xr-x | retiolum/bin/list-known-public-addresses | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/retiolum/bin/list-known-public-addresses b/retiolum/bin/list-known-public-addresses index d157cea4..d8073791 100755 --- a/retiolum/bin/list-known-public-addresses +++ b/retiolum/bin/list-known-public-addresses @@ -4,25 +4,29 @@ # set -eu -cd /etc/tinc/retiolum/hosts +_list_hostname_address() { + cd /etc/tinc/retiolum/hosts + grep --with-filename '^Address' * | + sed -n ' + s/: */ / + s/ *= */ / + s/ Address \([a-zA-Z0-9.:_]*\) \?.*/ \1/p' +} +_lookup_address() { + sed ' + /:/!{/ [0-9.]*$/!{s/ / `dig +short /;s/$/` \&/}} + s/^/echo / + $s/$/\nwait/ + ' | sh +} +_filter_public() { + sed ' + # drop private IPv4 addresses + / 10\./d + / 172\.\(1[6-9]\|2[0-9]\|3[01]\)\./d + / 192\.168\./d + # TODO drop private IPv6 addresses + ' +} -grep --with-filename '^Address' * | -sed ' - # filter "%s %s %s\n" hostname var val - s/: */ / - s/ *= */ / - # filter "%s %s\n" hostname address - s/ Address \([a-zA-Z0-9.:_]*\) \?.*/ \1/ - T - # prepare hostname lookup - /:/!{/ [0-9.]*$/!{s/ / `dig +short /;s/$/` \&/}} - s/^/echo / - $s/$/\nwait/ - # perform hostname lookup -' | sh | sed ' - # drop private IPv4 addresses - / 10\./d - / 172\.\(1[6-9]\|2[0-9]\|3[01]\)\./d - / 192\.168\./d - # TODO drop private IPv6 addresses -' +_list_hostname_address | _lookup_address | _filter_public |