From f2992565ab8be0544ae328c3d11243131a3b7441 Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 2 Feb 2013 00:19:20 +0100 Subject: //retiolum list-known-public-addresses: initial commit --- retiolum/bin/list-known-public-addresses | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100755 retiolum/bin/list-known-public-addresses (limited to 'retiolum/bin') diff --git a/retiolum/bin/list-known-public-addresses b/retiolum/bin/list-known-public-addresses new file mode 100755 index 00000000..d157cea4 --- /dev/null +++ b/retiolum/bin/list-known-public-addresses @@ -0,0 +1,28 @@ +#! /bin/sh +# +# printf '%s %s\n' hostname IP-address for each known public retiolum address +# +set -eu + +cd /etc/tinc/retiolum/hosts + +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 +' -- cgit v1.2.3 From c6f8c72d483fdcdf2ba4554ca7f578089df9f1c2 Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 2 Feb 2013 01:22:08 +0100 Subject: //retiolum list-known-public-addresses: factorize --- retiolum/bin/list-known-public-addresses | 46 +++++++++++++++++--------------- 1 file changed, 25 insertions(+), 21 deletions(-) (limited to 'retiolum/bin') 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 -- cgit v1.2.3 From e929315a0b734aab77a68bcfa41f24faf28b8896 Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 2 Feb 2013 01:31:29 +0100 Subject: //retiolum list-known-public-addresses: add online filter --- retiolum/bin/list-known-public-addresses | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'retiolum/bin') diff --git a/retiolum/bin/list-known-public-addresses b/retiolum/bin/list-known-public-addresses index d8073791..00d8d4b9 100755 --- a/retiolum/bin/list-known-public-addresses +++ b/retiolum/bin/list-known-public-addresses @@ -28,5 +28,11 @@ _filter_public() { # TODO drop private IPv6 addresses ' } +_filter_online() { + awk ' + {print"nc -zw 2 "$2" 655 2>/dev/null && echo "$1" "$2" &"} + END {print"wait"} + ' | sh +} -_list_hostname_address | _lookup_address | _filter_public +_list_hostname_address | _lookup_address | _filter_public | _filter_online -- cgit v1.2.3 From ae5b25d9c15b598460e44f2fc54168936abaca81 Mon Sep 17 00:00:00 2001 From: tv Date: Sat, 2 Feb 2013 01:50:33 +0100 Subject: //retiolum list-known-public-addresses: don't check if online --- retiolum/bin/list-known-public-addresses | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'retiolum/bin') diff --git a/retiolum/bin/list-known-public-addresses b/retiolum/bin/list-known-public-addresses index 00d8d4b9..21b1c389 100755 --- a/retiolum/bin/list-known-public-addresses +++ b/retiolum/bin/list-known-public-addresses @@ -35,4 +35,4 @@ _filter_online() { ' | sh } -_list_hostname_address | _lookup_address | _filter_public | _filter_online +_list_hostname_address | _lookup_address | _filter_public -- cgit v1.2.3