#!/bin/sh

. /lib/functions.sh

SCRIPTS_DIR="/usr/libexec/atlas-probe-scripts"
TMP_BASE_DIR="/tmp/ripe_atlas_probe"
PUB_KEY_FILE="$SCRIPTS_DIR/etc/probe_key.pub"
PRIV_KEY_FILE="$SCRIPTS_DIR/etc/probe_key"
PROBE_ID_FILE="$TMP_BASE_DIR/status/reg_init_reply.txt"

get_atlas_public_key() {
	local pub_key

	if [ -f "$PUB_KEY_FILE" ]; then
		pub_key=$(cat "$PUB_KEY_FILE")
	fi

	echo "{"
	echo \"pub-key\":\"$pub_key\"
	echo "}"
}

get_atlas_probeid() {
	local probe_id

	if /etc/init.d/atlas probeid 2>/dev/null; then
		probe_id="$(awk '/PROBE_ID/ {print $2}' "$PROBE_ID_FILE")"
	fi

	echo "{"
	echo \"probe-id\":\"$probe_id\"
	echo "}"
}

get_reg_info() {
	local pub_ip
	local asn
	local asn_org

	if [ -z "$pub_ip" ]; then
		pub_ip="$(dig -4 TXT +short o-o.myaddr.l.google.com @ns1.google.com|tr -d '"')"
	fi

	echo "{"
	echo \"public-ipv4\":\"$pub_ip\"
	echo "}"
}

get_status() {
	local status

	status="$(/etc/init.d/atlas status)"
	echo "{"
	echo \"status\":\"$status\"
	echo "}"
}

case "$1" in
	list)
		echo '{'
		echo ' "pub-key": {},'
		echo ' "probe-id": {},'
		echo ' "reg-info": {}'
		echo ' "status": {}'
		echo '}'
	;;
	call)
		case "$2" in
			pub-key)
				get_atlas_public_key
			;;
			probe-id)
				get_atlas_probeid
			;;
			reg-info)
				get_reg_info
			;;
			get-status)
				get_status
			;;
		esac
	;;
esac