summaryrefslogtreecommitdiff
path: root/share/hackvr/examples/anonet_map/map
blob: 976bb7904a2085d0e0c69bdd20263f2065445d28 (plain) (blame)
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
#!/bin/bash
paths="$(ncat --recv-only 21.41.41.1 64777 | sort | uniq | tee ${PREFIX}/var/cache/hackvr/anonet_data.new)"

MAP=${PREFIX}/var/cache/hackvr/anonet_map.hackvr
mkdir -p ${PREFIX}/var/cache/hackvr/

#see if the data actually changed before regenerating this shit...
if cmp ${PREFIX}/var/cache/hackvr/anonet_data.new ${PREFIX}/var/cache/hackvr/anonet_data.old ; then
  cat $MAP
  exit 0
fi

mv ${PREFIX}/var/cache/hackvr/anonet_data.new ${PREFIX}/var/cache/hackvr/anonet_data.old

> $MAP

nodes=$(printf "%s\n" "$paths" | tr ' ' '\n' | sort | uniq)
nodes_count="$(printf "%s\n" "$nodes" | tr ' ' '\n' | wc -l | tr -cd '0-9')"
#echo $nodes
#echo $nodes_count
echo $USER move 0 0 -20
coords="$( (for node in $nodes;do
  printf "AS%s addshape 4 2  0 8 0  0 0 0\n" "$node"
  printf "AS* rotate 0 0 +%d\n" "$[360 / ${nodes_count} ]"
  printf "AS* flatten\n"
done 
printf "* export *\n"
) | hackvr_headless 2>/dev/null | sed 's/^*_AS//g' | cut '-d ' -f5,6)"
#printf "%s\n" "$coords"
xcoords="$(printf "%s\n" "$coords" | cut '-d ' -f1)"
ycoords="$(printf "%s\n" "$coords" | cut '-d ' -f2)"

#echo $xcoords
#echo $ycoords

edges=$(printf "%s\n" "$paths" | tr '\n' '\0' | xargs -n1 -0 ./paths-to-edges | sort | uniq | tr ' ' '_')

index_of() {
  printf "%s\n" "$nodes" | grep -n '^'"$1"'$' | cut -d: -f1
}

xcoord_by_ASN() {
  printf "%s\n" "$xcoords" | head -n "$(index_of $1)" | tail -n1
}

ycoord_by_ASN() {
  printf "%s\n" "$ycoords" | head -n "$(index_of $1)" | tail -n1
}

line_between_nodes() {
  a=$(printf "%s\n" "$1" | cut -d_ -f1)
  b=$(printf "%s\n" "$1" | cut -d_ -f2)
  printf "%s->%s addshape 2 2 %s %s 0 %s %s 0\n" "$a" "$b" $(xcoord_by_ASN $a) $(ycoord_by_ASN $a) $(xcoord_by_ASN $b) $(ycoord_by_ASN $b)
}

for node in $nodes;do
  printf "<whois://whois.ano/AS%s> addshape 5 4  -1 8 0  -1 10 0  1 10 0  1 8 0\n" "$node"
  printf "<whois://whois.ano/AS* rotate 0 0 +%d\n" "$[360 / ${nodes_count} ]"
  printf "<whois://whois.ano/AS* flatten\n"
  makelabel.sh AS$node $( echo | awk "{print $(xcoord_by_ASN $node) * 13}" ) $( echo | awk "{print $(ycoord_by_ASN $node) * 13}" ) -19 <<< $node
  printf "AS%s scale .1 .1 .1\n" "$node"
done | tee -a $MAP

for i in $edges;do
  line_between_nodes "$i"
done | tee -a $MAP

#for i in ${!nodes[@]};do
#  echo $i
#  echo ${nodes[$i]}
#  node=$(printf "%s\n" "${nodes}" | head -n${i} | tail -n1)
#done