예제 #1
0
    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()
예제 #2
0
    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
예제 #3
0
    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
예제 #4
0
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)
	
예제 #5
0
#!/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())
예제 #6
0
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)
예제 #7
0
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):