aboutsummaryrefslogtreecommitdiff
path: root/net/atlas-sw-probe/files/atlas_rpcd.sh
blob: 0fde836380b20cbc8d73d22cb0483dbc33937b04 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#!/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