def start_ipc(self): """ Method to set up ipc interface :return: If no connection can be established """ self.ipc_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) self.ipc_socket.bind( (config.get("gui", "addr"), int(config.get("gui", "recv")))) try: self.ipc_socket.connect( (config.get("gui", "addr"), int(config.get("gui", "port")))) except OSError as err: print("Connection error:", err) return thread = threading.Thread(target=self.ipc_receive) thread.daemon = True thread.start()
def send_to_partner(ip, data): """ Method to send data string to given IP address via TCP :param ip: IP address to connect to :param data: String of data to be sent :return: True if data sent, False otherwise """ byte = bytes(data, "utf-8") s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: s.connect((ip, int(config.get("comm", "port")))) except OSError as err: print("Could not connect:", err) s.close() return False s.send(byte) s.close() return True
def receive_from_partner(ip): """ Method to receive data from given IP address :param ip: IP address to receive data from :return: Received data as String """ s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(("0.0.0.0", int(config.get("comm", "port")))) s.listen(1) data_str = "" conn, addr = s.accept() while 1: data = conn.recv(4096) if not data: break data_str += data.decode("utf-8") conn.close() if not data_str: raise ValueError return data_str
from core import core, transmission from storage import config import plyvel import json import os db = plyvel.DB(os.getenv('DB_PATH_OVERRIDE', config.get('database', 'path')), create_if_missing=True) def get_head(): ''' Get the blockId of the newest block ''' return db.get('head'.encode('utf-8')).decode('utf-8') def _set_head(blockId): ''' Internal function: Set newest blockId ''' db.put('head'.encode('utf-8'), blockId.encode('utf-8')) def put_block(block): ''' Put a core/Transmission block into the chain ''' if not isinstance(block, transmission.Transmission): raise TypeError('Not a Core.Transmission block object') assert block.previous_hash == get_head() db.put(block.transmission_hash.encode('utf-8'), block.to_json().encode('utf-8')) _set_head(block.transmission_hash)
#!/usr/bin/env python3 from core import core from storage import storage, config from network import registry, ip_server #print('db path: ' + config.get('database','path')) registry.delete_all() registry.put_key('myname', 'mykey') registry.put_key('mynameaswell', 'mykeyaswell') print('yea') if registry.key_exists('notmykey') else print('no') print(registry.get_all()) ip_server.delete_all() port=config.get('server', 'port') ip_server.add_self(port) ip_server.add_self_internal('99.99.99.99', 9999) print(ip_server.get_all()) ip_server.delete('99.99.99.99') print(ip_server.get_all()) t1 = core.produce_transmission_fully(storage.get_head(), ['priv_key1', 'priv_key2'], ['key1', 'key2'], 'document1_hash') storage.put_block(t1) t2 = core.produce_transmission_fully(storage.get_head(), ['priv_key1', 'priv_key2'], ['key3', 'key4'], 'document2_hash') storage.put_block(t2) #print(storage.get_block(storage.get_head()).to_json())
from storage import config import requests import json server_addr = config.get('registry', 'addr') server_auth = (config.get('registry', 'user'), config.get('registry', 'pass')) def _raise_exception(response): raise Exception('%i: %s' % (response.status_code, response.text)) def key_exists(key): r = requests.get(server_addr, auth=server_auth, json={'key': key}) if r.status_code == 200: return True if r.status_code == 404: return False _raise_exception(r) def put_key(name, key): r = requests.post(server_addr, auth=server_auth, json={ 'key': key, 'id': name }) if r.status_code != 200: _raise_exception(r)
from storage import config import requests import json server_addr = config.get('ip-server', 'addr') def _raise_exception(response): raise Exception('%i: %s' % (response.status_code, response.text)) def add_self(port): r = requests.post(server_addr, json={'port': port}) if r.status_code != 200: _raise_exception(r) def add_self_internal(ip, port): r = requests.post(server_addr + 'internal', json={'ip': ip, 'port': port}) if r.status_code != 200: _raise_exception(r) def get_all(): r = requests.get(server_addr) if r.status_code != 200: _raise_exception(r) return json.loads(r.text) def delete(ip):