rnns: friendly name to rnid tool
Started by qbit b253938bf730967b... ·
rnns is an extremely simple script that helps one locally resolve names to
RNIDs.
#!/bin/sh
RN_NAME_FILE=${RN_NAME_FILE:-~/.rnns}
function usage() {
echo "rnns [-h] friendly_identifier"
}
while getopts h name; do
case $name in
h)
usage
exit 0
;;
*)
usage
exit 1
esac
done
if [ -z "$1" ]; then
usage
exit 1
fi
awk -v entry="$1" '{ for (i=NF; i>1; i--) { if ($i == entry) { print $1} } }' $RN_NAME_FILE
For example usage, one can add an entry for the official Reticulum signing key:
bc7291552be7a58f361522990465165crns-sig
Now you can use it by calling rnns with the string rns-sig:
% rnid -i $(rnns rns-sig) -V nomadnet-1.0.4.tar.gz
Recalled Identity <bc7291552be7a58f361522990465165c>
Signature is valid, the file nomadnet-1.0.4.tar.gz was signed by <bc7291552be7a58f361522990465165c>
%
You can even add multiple aliases for a single entry:
0cc65124b72a5fdec6dcc14241bb8108openbsd.app openbsd app
All three of the above "resolve" to 0cc6...!
Hope someone finds it useful!
alternative link to the script: 3b5bc6888356193f1ac1bfb716c1beef:/file/rnns
3b5bc6888356193f1ac1bfb716c1beef... beef...
That's nice! Thanks qbit!
Nice one!
Follow-up idea: Have all CLI tools of RNS support a .reticulum/aliases file, similar to SSH aliases.
Or maybe an rnalias tool for managing .reticulum/storage/aliases, if not a part of rnid itself?
joakim wrote:
Nice one!
Follow-up idea: Have all CLI tools of RNS support a
.reticulum/aliasesfile, similar to SSH aliases.Or maybe an
rnaliastool for managing.reticulum/storage/aliases, if not a part ofrniditself?
That would be super nice. How do people manage their identities I wonder. Keep a list somewhere and copy paste of needed?
Here's an updated version that has support for rngit aliases:
#!/bin/sh
# rnns is a utility that can be used to associate a name to a reticulum identity.
# the ~/.rnns file is similar to /etc/hosts, one rnid per line, multiple names
# can bee added at the end:
# abcdething thing.stuff
#
# It also supports pulling aliases from ~/.rngit/client_config.
RN_NAME_FILE=${RN_NAME_FILE:-~/.rnns}
usage() {
echo "rnns [-h] friendly_identifier"
}
while getopts h name; do
case $name in
h)
usage
exit 0
;;
*)
usage
exit 1
;;
esac
done
if [ -z "$1" ]; then
usage
exit 1
fi
RNNF_ENTRY="$(awk -v entry="$1" '{ for (i=NF; i>1; i--) { if ($i == entry) { print $1} } }' $RN_NAME_FILE)"
if [ "$RNNF_ENTRY" == "" ]; then
if [ -r ~/.rngit/client_config ]; then
awk -v entry="$1" '{ if ($1 == entry) {print $3} }' ~/.rngit/client_config
fi
else
echo $RNNF_ENTRY
fi
http mirror: https://paste.suah.dev/rnns
rns mirror: 3b5bc6888356193f1ac1bfb716c1beef:/file/rnns
It might be nice to support comments/notes per alias. Here's how that would look like:
3b5bc6888356193f1ac1bfb716c1beef qbit # based on a forum comment
Updated AWK line:
awk -v entry="$1" '{ sub(/#.*/,""); for (i=NF; i>1; i--) { if ($i == entry) { print $1 } } }' "$RN_NAME_FILE"
Nice, thanks! maybe I shuold put this in a repo..