5
0
mirror of https://github.com/cwinfo/yggdrasil-map synced 2024-11-22 14:00:27 +00:00

log graph insertions

This commit is contained in:
Michał Zieliński 2015-11-21 13:03:19 +01:00
parent 22052a3840
commit 2beed33600
4 changed files with 20 additions and 14 deletions

View File

@ -19,8 +19,6 @@ class NodeDB:
self.con.commit() self.con.commit()
self.con.close() self.con.close()
def insert_node(self, node): def insert_node(self, node):
now = int(time.time()) now = int(time.time())
self.cur.execute(''' self.cur.execute('''
@ -31,7 +29,7 @@ class NodeDB:
node.ip, node.label, node.version, now, now, node.ip, node.label, node.version, now, now,
node.label, node.version, now)) node.label, node.version, now))
def insert_edge(self, edge, uploaded_by): def insert_edge(self, edge, uploaded_by):
now = int(time.time()) now = int(time.time())
self.cur.execute(''' self.cur.execute('''
INSERT INTO edges (a, b, first_seen, last_seen, uploaded_by) INSERT INTO edges (a, b, first_seen, last_seen, uploaded_by)
@ -41,7 +39,7 @@ class NodeDB:
edge.a.ip, edge.b.ip, now, now, uploaded_by, edge.a.ip, edge.b.ip, now, now, uploaded_by,
now)) now))
def insert_graph(self, nodes, edges, uploaded_by): def insert_graph(self, nodes, edges, uploaded_by):
for n in nodes.itervalues(): for n in nodes.itervalues():
self.insert_node(n) self.insert_node(n)

View File

@ -2,26 +2,34 @@ import json
from database import NodeDB from database import NodeDB
from graph import Node, Edge from graph import Node, Edge
import traceback import traceback
import time
def insert_graph_data(config, data, mail, ip): def insert_graph_data(config, data, mail, ip, version):
try: try:
graph_data = json.loads(data) graph_data = json.loads(data)
except ValueError: except ValueError:
return 'Invalid JSON' return 'Invalid JSON'
log = '[%s] version: %d, mail: %r, nodes: %d, edges: %d' % (
time.strftime('%Y-%m-%d %H:%M:%S'),
version, mail, len(graph_data['nodes']), len(graph_data['edges']))
with open(config['LOG'], 'a') as f:
f.write(log + '\n')
nodes = dict() nodes = dict()
edges = [] edges = []
try: try:
for n in graph_data['nodes']: for n in graph_data['nodes']:
try: try:
node = Node(n['ip'], version=n['version']) node = Node(n['ip'], version=n['version'])
nodes[n['ip']] = node nodes[n['ip']] = node
except Exception: except Exception:
pass pass
for e in graph_data['edges']: for e in graph_data['edges']:
try: try:
edge = Edge(nodes[e['a']], nodes[e['b']]) edge = Edge(nodes[e['a']], nodes[e['b']])
edges.append(edge) edges.append(edge)
except Exception: except Exception:
@ -40,7 +48,7 @@ def insert_graph_data(config, data, mail, ip):
with NodeDB(config) as db: with NodeDB(config) as db:
db.insert_graph(nodes, edges, uploaded_by) db.insert_graph(nodes, edges, uploaded_by)
except Exception: except Exception:
traceback.print_exc() traceback.print_exc()
return 'Database failure' return 'Database failure'
return None return None

View File

@ -1,8 +1,6 @@
import pygraphviz as pgv import pygraphviz as pgv
import time import time
import json import json
import collections
import math
import networkx as nx import networkx as nx
from networkx.algorithms import centrality from networkx.algorithms import centrality

View File

@ -31,9 +31,11 @@ def page_about():
def page_sendGraph(): def page_sendGraph():
print "Receiving graph from %s" % (request.remote_addr) print "Receiving graph from %s" % (request.remote_addr)
data = request.form['data'] data = request.form['data']
mail = request.form.get('mail', 'none') mail = request.form.get('mail', 'none')
ret = insert_graph_data(ip=get_ip(), config=app.config, data=data, mail=mail) version = int(request.form.get('version', '1'))
ret = insert_graph_data(ip=get_ip(), config=app.config, data=data, mail=mail, version=version)
if ret == None: if ret == None:
return 'OK' return 'OK'
else: else: