diff --git a/vserv/vserv.py b/vserv/vserv.py deleted file mode 100644 index 009998f..0000000 --- a/vserv/vserv.py +++ /dev/null @@ -1,140 +0,0 @@ -#server for collecting DHT info - -import json -import psycopg2 -import time -import os -import socket -import ipaddress -import thread -import sys - -SERVER = "" -DB_PASSWORD = "password" -DB_USER = "yggindex" -DB_NAME = "yggindex" -DB_HOST = "localhost" - -def create_tables(): - try: - dbconn = psycopg2.connect(host=DB_HOST,database=DB_NAME, user=DB_USER, password=DB_PASSWORD) - cur = dbconn.cursor() - - cur.execute('''CREATE TABLE yggindex(ipv6 varchar UNIQUE,\ - coords varchar, unixtstamp varchar)''') - cur.execute('''CREATE TABLE timeseries(max varchar,\ - unixtstamp varchar)''') - cur.execute('''CREATE TABLE contrib(ipv6 varchar UNIQUE,\ - unixtstamp varchar)''') - - dbconn.commit() - cur.close() - dbconn.close() - except: - print "somethings up, check you created the database correctly" - -if len(sys.argv) > 1: - if sys.argv[1] == "gentables": - create_tables() - -def check_coords(coords): - coord_len = coords.replace(' ', '').replace('[', '').replace(']', '') - digits_found = [x for x in coord_len if x.isdigit()] - - if len(digits_found) == len(coord_len): - crus = True - else: - crus = False - return crus - - -def valid_ipv6_check(ipv6add): - try: - if ipaddress.IPv6Address(unicode(ipv6add)): - addr = True - except: - addr = False - return addr - - -def insert_new_entry(ipv6, coords): - try: - dbconn = psycopg2.connect(host=DB_HOST,database=DB_NAME, user=DB_USER, password=DB_PASSWORD) - cur = dbconn.cursor() - - cur.execute('''INSERT INTO yggindex(ipv6, coords, unixtstamp)\ - VALUES(''' + "'" + ipv6 + "'," + "'" + coords + "'," + str(int(time.time())) + ''')\ - ON CONFLICT (ipv6) DO UPDATE\ - SET unixtstamp = ''' + "'" + str(int(time.time())) + "'," +''' \ - coords = ''' + "'" + coords + "'" + ''';''') - - dbconn.commit() - cur.close() - dbconn.close() - except: - cur.close() - dbconn.close() - -def contrib_entry(ipv6): - try: - dbconn = psycopg2.connect(host=DB_HOST,database=DB_NAME, user=DB_USER, password=DB_PASSWORD) - cur = dbconn.cursor() - cur.execute('''INSERT INTO contrib(ipv6, unixtstamp)\ - VALUES(''' + "'" + ipv6 + "'," + str(int(time.time())) + ''')\ - ON CONFLICT (ipv6) DO UPDATE\ - SET unixtstamp = ''' + "'" + str(int(time.time())) + "'" + ''';''') - dbconn.commit() - cur.close() - dbconn.close() - except: - cur.close() - dbconn.close() - -def error_check_insert_into_db(dht, switchpeers, ipv6): - try: - if dht.get("status") == "success": - for x, y in dht["response"]["dht"].iteritems(): - if valid_ipv6_check(x) and check_coords(y["coords"]): - insert_new_entry(x, y["coords"]) - - if switchpeers.get("status") == "success": - for x in switchpeers["response"]["switchpeers"].iteritems(): - if valid_ipv6_check(x[1]["ip"]) and check_coords(x[1]["coords"]): - insert_new_entry(x[1]["ip"], x[1]["coords"]) - - contrib_entry(ipv6) - except: - print "error in json file, aborting" - - -def recv_until_done(soc): - all_data = [] - while True: - incoming_data = soc.recv(8192) - if not incoming_data: - soc.close() - break - all_data.append(incoming_data) - return ''.join(all_data) - - -def proccess_incoming_data(datty, ipv6): - print str(time.time()) + " " + str(ipv6) - try: - ddata = recv_until_done(datty) - data = json.loads(ddata.decode()) - error_check_insert_into_db(data["dhtpack"], data["switchpack"], ipv6) - except: - print "ignoring, data was not json" - - -conn = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) -conn.bind((SERVER, 45671)) -conn.listen(30) - -while True: - try: - dataraw, addr = conn.accept() - thread.start_new_thread(proccess_incoming_data, (dataraw, addr[0])) - except Exception: - print "bloop"