From 4ff0ee9aa5a500ce51dc6a93f400641698cdf3e0 Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Sat, 10 Oct 2020 13:24:38 -0400 Subject: add script originating from cryptonomic source --- src/get-dyndns-name | 67 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100755 src/get-dyndns-name diff --git a/src/get-dyndns-name b/src/get-dyndns-name new file mode 100755 index 0000000..7ef8c1b --- /dev/null +++ b/src/get-dyndns-name @@ -0,0 +1,67 @@ +#!/bin/sh +set -e + +DEFAULT_AUTH_TYPE=ed25519 + +in_group() +{ + local g + for g in $(groups) + do + [ "$g" = "$1" ] && return + done + false +} + +ssh_keytag_to_path_fragment() +{ + case "$1" in + ssh-dss) echo dsa ;; + ecdsa-sha2-nistp256) echo ecdsa ;; + ssh-rsa|ssh-ed25519) echo ${1#ssh-} ;; + *) return 1 ;; + esac +} + +path_fragment_to_ssh_keytag() +{ + case "$1" in + ssh-dss|ecdsa-sha2-nistp256|ssh-rsa|ssh-ed25519) echo $1;; + dss|rsa|ed25519) echo ssh-$1 ;; + dsa) echo ssh-dss ;; + ecdsa) echo ecdsa-sha2-nistp256 ;; + *) return 1 ;; + esac +} + +get_dyndns_domain() +{ + fragment=$(ssh_keytag_to_path_fragment "$1") || return + + host_keyfile=/etc/ssh/ssh_host_${fragment}_key + user_keyfile=$HOME/.ssh/id_${fragment} + + set -- -q dyndns@cryptonomic.net + + if [ -r "$host_keyfile" ] + then + set -- ssh -i "$host_keyfile" "$@" + + elif in_group sudo + then + set -- sudo ssh -i "$host_keyfile" "$@" + + elif [ -r "$user_keyfile" ] + then + set -- ssh -i "$user_keyfile" "$@" + + else + set -- ssh "$@" + fi + + "$@" +} + +AUTH_TYPE=${1:-$DEFAULT_AUTH_TYPE} +AUTH_KEYTAG=$(path_fragment_to_ssh_keytag "$AUTH_TYPE") +get_dyndns_domain "$AUTH_KEYTAG" -- cgit v1.2.3