2018-02-20 12:04:37 +00:00
|
|
|
#!/bin/sh
|
|
|
|
|
2020-02-21 04:09:38 +00:00
|
|
|
[ -t 1 ] || init-crypto 2> /dev/null > /dev/null
|
2019-02-24 14:10:08 +00:00
|
|
|
|
2018-02-20 12:04:37 +00:00
|
|
|
# FUNCTIONS ###########################################################
|
|
|
|
|
|
|
|
# script usage
|
|
|
|
usage() {
|
|
|
|
>&2 cat <<EOF
|
|
|
|
ADLIN token generator
|
|
|
|
EOF
|
|
|
|
}
|
|
|
|
|
|
|
|
# token generator
|
|
|
|
token_generator() {
|
|
|
|
{
|
|
|
|
echo -n ${PKEY}
|
|
|
|
for d
|
|
|
|
do
|
|
|
|
echo -n :${d}
|
|
|
|
done
|
2018-02-21 00:51:06 +00:00
|
|
|
} | sha512sum | cut -d ' ' -f 1
|
2018-02-20 12:04:37 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
# JSON token format helper
|
|
|
|
token_format() {
|
|
|
|
local TID=$1
|
|
|
|
local TOKEN=$2
|
|
|
|
shift 2
|
|
|
|
|
|
|
|
[ $# -gt 0 ] && {
|
|
|
|
local DATA=',
|
|
|
|
"data": [';
|
|
|
|
for d; do
|
|
|
|
[ -z "$Z" ] && Z=1 || DATA="$DATA, "
|
|
|
|
DATA="$DATA\"$d\""
|
|
|
|
done
|
|
|
|
DATA="$DATA]"
|
|
|
|
}
|
|
|
|
|
2018-02-21 00:25:31 +00:00
|
|
|
local challenge=
|
|
|
|
[ -z "${TID}" ] || {
|
|
|
|
challenge="
|
|
|
|
\"challenge\": ${TID},"
|
|
|
|
}
|
|
|
|
|
2019-02-27 01:41:37 +00:00
|
|
|
# There is a hidden bonus if you send adlin 42 to
|
|
|
|
# adlin.nemunai.re/toctoc
|
2018-02-23 19:56:35 +00:00
|
|
|
cat <<EOF
|
2018-02-20 12:04:37 +00:00
|
|
|
{
|
2018-02-21 00:25:31 +00:00
|
|
|
"login": "${ULGN}",${challenge}
|
2018-02-20 12:04:37 +00:00
|
|
|
"token": "${TOKEN}"${DATA}
|
|
|
|
}
|
|
|
|
EOF
|
|
|
|
}
|
|
|
|
|
|
|
|
# /proc/cmdline parser (from Gentoo Wiki)
|
|
|
|
cmdline() {
|
|
|
|
local value
|
|
|
|
value=" $(cat /proc/cmdline) "
|
|
|
|
value="${value##* $1=}"
|
|
|
|
value="${value%% *}"
|
|
|
|
[ "$value" != "" ] && echo "$value"
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# GLOBAL VARIABLES ####################################################
|
|
|
|
|
|
|
|
ULGN=$(cmdline adlin.login)
|
|
|
|
PKEY=$(cmdline adlin.key)
|
|
|
|
|
|
|
|
|
|
|
|
# MAIN ################################################################
|
|
|
|
|
|
|
|
[ $# -lt 1 ] && { usage; exit 1; }
|
|
|
|
|
2018-02-21 00:25:31 +00:00
|
|
|
TOKENID="$1"
|
|
|
|
case "${TOKENID}" in
|
2018-02-20 12:04:37 +00:00
|
|
|
token1|token2)
|
|
|
|
HDATA=42
|
|
|
|
;;
|
2019-02-27 01:41:37 +00:00
|
|
|
token3|token5)
|
2018-02-20 12:04:37 +00:00
|
|
|
DATA=$(date +%s%N)
|
|
|
|
;;
|
2019-02-27 01:41:37 +00:00
|
|
|
bonus2)
|
2018-02-21 00:25:31 +00:00
|
|
|
echo "${TOKENID} is not here! Perhaps it has been accidentally deleted?" >&2
|
2018-02-20 12:04:37 +00:00
|
|
|
exit 2
|
|
|
|
;;
|
2019-02-27 01:41:37 +00:00
|
|
|
token4)
|
2020-02-24 09:02:12 +00:00
|
|
|
if [ -t 0 ]; then
|
|
|
|
HDATA=$(dig +short +time=1 +tries=0 adlin.nemunai.re $2) || {
|
|
|
|
echo "Try again! Your resolver settings seems not good :(" >&2
|
|
|
|
exit 3
|
|
|
|
}
|
|
|
|
else
|
|
|
|
read HDATA
|
|
|
|
fi
|
|
|
|
HDATA=$(echo "${HDATA}" | sed 's/["\\]//g')
|
2018-02-20 12:04:37 +00:00
|
|
|
echo $HDATA | grep "not here" 2> /dev/null && exit 3
|
|
|
|
;;
|
|
|
|
*)
|
2018-02-21 00:25:31 +00:00
|
|
|
DATA=$@
|
|
|
|
TOKENID=
|
2018-02-20 12:04:37 +00:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2019-02-27 01:41:37 +00:00
|
|
|
if [ -n "${TOKENID}" ]
|
|
|
|
then
|
|
|
|
TOKENID="${TOKENID#token}"
|
|
|
|
if [ "$TOKENID" -ne "${TOKENID#bonus}" ]
|
|
|
|
then
|
|
|
|
TOKENID="${TOKENID#bonus}"
|
|
|
|
TOKENID=$(($TOKENID + 5))
|
|
|
|
fi
|
|
|
|
fi
|
|
|
|
|
|
|
|
token_format "${TOKENID}" "$(token_generator ${TOKENID} ${HDATA} ${DATA})" ${DATA}
|