diff --git a/client.py b/client.py index 368e23be804fbcdb8111ca70a304c8aba5de7ffb..3d696cdf11163d09b9efeedc1582bf96f03aba92 100644 --- a/client.py +++ b/client.py @@ -21,11 +21,12 @@ Sources: https://www.ietf.org/rfc/rfc3092.txt <- Very important RFC, please read it """ -import asyncio, getpass, random +import sys, os, asyncio, getpass, random, time, secrets import ubjson import plyvel import libnacl.sign -from utils import * +from duniterpy.key import SigningKey, PublicKey +import utils VERSION = "0.1.0" AUTHORS = ["Pascal Engélibert <tuxmain@zettascript.org>"] @@ -65,7 +66,7 @@ class Confirmation(): } def get_peers(host, proxy=None, proxy_onion_only=False): - header, content = sdata(host, "GET", "/pubkey/list", proxy=proxy, proxy_onion_only=proxy_onion_only) + header, content = utils.sdata(host, "GET", "/pubkey/list", proxy=proxy, proxy_onion_only=proxy_onion_only) try: data = ubjson.loadb(content) @@ -75,9 +76,9 @@ def get_peers(host, proxy=None, proxy_onion_only=False): print("Error: bad UBJSON") return - peers = [Peer(data["pubkey"], host[0], host[1], True)] + peers = [utils.Peer(data["pubkey"], host[0], host[1], True)] for peer in data["peers"]: - peers.append(Peer(peer["pubkey"], peer["host"], peer["port"], peer["up"])) + peers.append(utils.Peer(peer["pubkey"], peer["host"], peer["port"], peer["up"])) return peers @@ -110,7 +111,7 @@ def mix(db_txs, amount, base, sender, path, host, proxy=None, proxy_onion_only=F message = b"" i = len(path)-2 while i >= 0: - ot_salt, ot_password = gen_keys() + ot_salt, ot_password = utils.gen_keys() ot_keys = SigningKey.from_credentials(ot_salt, ot_password) onetime_keys.insert(0, ot_keys) out_seeds = comment_seeds[0] @@ -130,7 +131,7 @@ def mix(db_txs, amount, base, sender, path, host, proxy=None, proxy_onion_only=F while True: try: - header, content = sdata(host, "POST", "/pubkey/mix/"+sender.pubkey+"/"+str(int(amount))+"/"+str(int(base))+"/client", message, proxy=proxy, proxy_onion_only=proxy_onion_only) + header, content = utils.sdata(host, "POST", "/pubkey/mix/"+sender.pubkey+"/"+str(int(amount))+"/"+str(int(base))+"/client", message, proxy=proxy, proxy_onion_only=proxy_onion_only) except ConnectionRefusedError: print("Error: Connection refused; retrying...") time.sleep(3) @@ -151,7 +152,7 @@ def mix(db_txs, amount, base, sender, path, host, proxy=None, proxy_onion_only=F time.sleep(5) print("Asking input node for confirmation...") try: - header, content = sdata(host, "GET", "/getconfirm/"+sender.pubkey+"/"+comment_seeds[0][1].hex(), proxy=proxy, proxy_onion_only=proxy_onion_only) + header, content = utils.sdata(host, "GET", "/getconfirm/"+sender.pubkey+"/"+comment_seeds[0][1].hex(), proxy=proxy, proxy_onion_only=proxy_onion_only) except ConnectionRefusedError: continue @@ -185,7 +186,7 @@ def mix(db_txs, amount, base, sender, path, host, proxy=None, proxy_onion_only=F raw_confirms = [] offset = 64 while offset+4 < len(data): - length = bin_to_int(data[offset:offset+4]) + length = utils.bin_to_int(data[offset:offset+4]) offset += 4 raw_confirms.append(data[offset:offset+length]) offset += length @@ -253,14 +254,14 @@ def mix(db_txs, amount, base, sender, path, host, proxy=None, proxy_onion_only=F if send_tx: try: - send_transaction(sender, path[0], amount, gen_comment(comment_seeds[0])) + utils.send_transaction(sender, path[0], amount, utils.gen_comment(comment_seeds[0])) message["sent"] = True db_txs.put(comment_seeds[0][1], PublicKey(sender.pubkey).encrypt_seal(ubjson.dumpb(message))) except socket.timeout: - logprint("Error when sending tx: timeout", LOG_ERROR) + utils.logprint("Error when sending tx: timeout", LOG_ERROR) except Exception as e: - logprint("Error when sending tx: " + str(e), LOG_ERROR) + utils.logprint("Error when sending tx: " + str(e), LOG_ERROR) return async def main(db_txs, host, receiver, amount=1000, layers=3, proxy=None, proxy_onion_only=False, send_tx=True): @@ -313,25 +314,25 @@ python3 client.py -h svetsae7j3usrycn.onion 10951 -r 78ZwwgpgdH5uLZLbThUQH7LKwPg """) exit() - DIR = os.path.expanduser(getargv("-d", DIR)) + DIR = os.path.expanduser(utils.getargv("-d", DIR)) if DIR != "" and DIR[len(DIR)-1] == "/": DIR = DIR[:len(DIR)-1] # Remove last slash os.makedirs(DIR, exist_ok=True) - receiver = getargv("-r", "") + receiver = utils.getargv("-r", "") if receiver == "": print("Error: No receiver set (try option --help)") exit(1) - host = getargv("-h", "") + host = utils.getargv("-h", "") if host == "": print("Error: No host set (try option --help)") exit(1) - port = int(getargv("-h", "", 2)) - amount = int(getargv("-a", "1000")) - layers = int(getargv("-l", "3")) + port = int(utils.getargv("-h", "", 2)) + amount = int(utils.getargv("-a", "1000")) + layers = int(utils.getargv("-l", "3")) proxy = None if "-p" in sys.argv: - proxy = (getargv("-p", "127.0.0.1", 1), int(getargv("-p", 9050, 2))) + proxy = (utils.getargv("-p", "127.0.0.1", 1), int(utils.getargv("-p", 9050, 2))) proxy_onion_only = "--onion" in sys.argv send_tx = not "--no-tx" in sys.argv diff --git a/utils.py b/utils.py index af2ab28a3e10da7a1c120a72bf298ebed5e9d40a..8c8f5fd4587907bf45b2f7f0974c5c26c919a4fc 100644 --- a/utils.py +++ b/utils.py @@ -19,10 +19,7 @@ import sys, os, re, socket, time, secrets, hashlib import socks from duniterpy.key import SigningKey, PublicKey -_argv = sys.argv # silkaj reads sys.argv! -sys.argv = [] import silkaj.money, silkaj.tx, silkaj.auth -sys.argv = _argv #-------- DATA