summaryrefslogtreecommitdiffstats
path: root/retiolum/scripts/adv_graphgen
diff options
context:
space:
mode:
Diffstat (limited to 'retiolum/scripts/adv_graphgen')
-rwxr-xr-xretiolum/scripts/adv_graphgen/anonytize.sh6
-rw-r--r--retiolum/scripts/adv_graphgen/find_super14
-rw-r--r--retiolum/scripts/adv_graphgen/find_super.py43
-rwxr-xr-xretiolum/scripts/adv_graphgen/parse_tinc_stats.py8
-rwxr-xr-xretiolum/scripts/adv_graphgen/sanitize.sh6
5 files changed, 38 insertions, 39 deletions
diff --git a/retiolum/scripts/adv_graphgen/anonytize.sh b/retiolum/scripts/adv_graphgen/anonytize.sh
index b31f4dbb..2e2045e4 100755
--- a/retiolum/scripts/adv_graphgen/anonytize.sh
+++ b/retiolum/scripts/adv_graphgen/anonytize.sh
@@ -9,8 +9,8 @@ LOG_FILE=${LOG_FILE:-/var/log/syslog}
TYPE=svg
TYPE2=png
OPENER=/bin/true
-DOTFILE=`mktemp`
-trap 'rm $DOTFILE' INT TERM
+DOTFILE=`mktemp --suffix=anon`
+trap 'rm $DOTFILE' INT TERM KILL
sudo -E python tinc_stats2json |\
python parse_tinc_anon.py> $DOTFILE
@@ -24,7 +24,7 @@ do
mv $tmpgraph $1/retiolum_$i.$TYPE
i=`expr $i + 1`
done
-#convert -resize 20% $1/retiolum_1.$TYPE $1/retiolum_1.$TYPE2
+convert $1/retiolum_1.$TYPE $1/retiolum_1.$TYPE2
#convert -resize 20% $1/retiolum_2.$TYPE $1/retiolum_2.$TYPE2
#convert -resize 20% $1/retiolum_3.$TYPE $1/retiolum_3.$TYPE2
#convert -resize 20% $1/retiolum_4.$TYPE $1/retiolum_4.$TYPE2
diff --git a/retiolum/scripts/adv_graphgen/find_super b/retiolum/scripts/adv_graphgen/find_super
deleted file mode 100644
index c89a94fb..00000000
--- a/retiolum/scripts/adv_graphgen/find_super
+++ /dev/null
@@ -1,14 +0,0 @@
-#!/bin/sh
-cd /etc/tinc/retiolum/hosts
-ls -1 . | while read fname;
-do
- for i in `sed -n 's/Address\s*=\s*\(.*\)/\1/p' $fname`;do
- if nc -zw 5 $i 655 2>/dev/null; then
- echo "$fname - $i reachable"
- #else
- #echo -n
- #echo "$fname - $i unreachable"
-
- fi
- done
-done
diff --git a/retiolum/scripts/adv_graphgen/find_super.py b/retiolum/scripts/adv_graphgen/find_super.py
index df01734e..ae0fae8f 100644
--- a/retiolum/scripts/adv_graphgen/find_super.py
+++ b/retiolum/scripts/adv_graphgen/find_super.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
-def find_super(path="/etc/tinc/retiolum/hosts"):
+def find_potential_super(path="/etc/tinc/retiolum/hosts"):
import os
import re
@@ -23,28 +23,37 @@ def find_super(path="/etc/tinc/retiolum/hosts"):
if addrs : yield (f ,[(addr ,int(port)) for addr in addrs])
-def check_super(path="/etc/tinc/retiolum/hosts"):
- from socket import socket,AF_INET,SOCK_STREAM
- for host,addrs in find_super(path):
+def try_connect(addr):
+ try:
+ from socket import socket,AF_INET,SOCK_STREAM
+ s = socket(AF_INET,SOCK_STREAM)
+ s.settimeout(2)
+ s.connect(addr)
+ s.settimeout(None)
+ s.close()
+ return addr
+ except Exception as e:
+ pass
+ #return ()
+
+def check_one_super(ha):
+ host,addrs = ha
valid_addrs = []
for addr in addrs:
- try:
- s = socket(AF_INET,SOCK_STREAM)
- s.settimeout(3)
- s.connect(addr)
- #print("success connecting %s:%d"%(addr))
- s.settimeout(None)
- s.close()
- valid_addrs.append(addr)
- except Exception as e:
- pass
- #print("cannot connect to %s:%d"%(addr))
- if valid_addrs: yield (host,valid_addrs)
+ ret = try_connect(addr)
+ if ret: valid_addrs.append(ret)
+ if valid_addrs: return (host,valid_addrs)
+
+def check_all_the_super(path="/etc/tinc/retiolum/hosts"):
+ from multiprocessing import Pool
+ p = Pool(20)
+ return filter(None,p.map(check_one_super,find_potential_super(path)))
+
if __name__ == "__main__":
"""
usage
"""
- for host,addrs in check_super():
+ for host,addrs in check_all_the_super():
print host,addrs
diff --git a/retiolum/scripts/adv_graphgen/parse_tinc_stats.py b/retiolum/scripts/adv_graphgen/parse_tinc_stats.py
index 76a3ffcd..e5bd96a8 100755
--- a/retiolum/scripts/adv_graphgen/parse_tinc_stats.py
+++ b/retiolum/scripts/adv_graphgen/parse_tinc_stats.py
@@ -2,7 +2,7 @@
# -*- coding: utf8 -*-
from BackwardsReader import BackwardsReader
import sys,json
-from find_super import check_super
+from find_super import check_all_the_super
try:
from time import time
import socket
@@ -18,7 +18,7 @@ except Exception as e:
sys.stderr.write("Cannot connect to graphite: %s\n" % str(e))
supernodes= [ ]
-for supernode,addr in check_super():
+for supernode,addr in check_all_the_super():
supernodes.append(supernode)
""" TODO: Refactoring needed to pull the edges out of the node structures again,
it should be easier to handle both structures"""
@@ -39,6 +39,7 @@ def write_digraph(nodes):
for k,v in nodes.iteritems():
write_node(k,v)
print ('}')
+
def dump_graph(nodes):
from time import time
graph = {}
@@ -48,6 +49,7 @@ def dump_graph(nodes):
json.dump(graph,f)
f.write('\n')
f.close()
+
def write_stat_node(nodes):
''' Write a `stats` node in the corner
This node contains infos about the current number of active nodes and connections inside the network
@@ -95,6 +97,7 @@ def generate_stats(nodes):
v['avg_weight'] = get_node_avg_weight(conns)
v['availability'] = get_node_availability(k,jlines)
sys.stderr.write( "%s -> %f\n" %(k ,v['availability']))
+
def get_node_avg_weight(conns):
""" calculates the average weight for the given connections """
if not conns:
@@ -143,6 +146,7 @@ def delete_unused_nodes(nodes):
#del(new_nodes[k])
del(k)
return new_nodes
+
def merge_edges(nodes):
""" merge back and forth edges into one
DESTRUCTS the current structure by deleting "connections" in the nodes
diff --git a/retiolum/scripts/adv_graphgen/sanitize.sh b/retiolum/scripts/adv_graphgen/sanitize.sh
index 45d29a22..846cc549 100755
--- a/retiolum/scripts/adv_graphgen/sanitize.sh
+++ b/retiolum/scripts/adv_graphgen/sanitize.sh
@@ -9,8 +9,8 @@ LOG_FILE=${LOG_FILE:-/var/log/syslog}
TYPE=svg
TYPE2=png
OPENER=/bin/true
-DOTFILE=`mktemp`
-trap 'rm $DOTFILE' INT TERM
+DOTFILE=`mktemp --suffix=san`
+trap 'rm $DOTFILE' INT TERM KILL
sudo -E python tinc_stats2json |\
python parse_tinc_stats.py > $DOTFILE
@@ -25,7 +25,7 @@ do
i=`expr $i + 1`
done
-#convert -resize 20% $1/retiolum_1.$TYPE $1/retiolum_1.$TYPE2
+convert $1/retiolum_1.$TYPE $1/retiolum_1.$TYPE2
#convert -resize 20% $1/retiolum_2.$TYPE $1/retiolum_2.$TYPE2
#convert -resize 20% $1/retiolum_3.$TYPE $1/retiolum_3.$TYPE2
#convert -resize 20% $1/retiolum_4.$TYPE $1/retiolum_4.$TYPE2