diff --git a/setup.py b/setup.py index 163fb9b0..e4ef1c90 100755 --- a/setup.py +++ b/setup.py @@ -7,7 +7,7 @@ import sys from setuptools import setup, Extension from setuptools.command.install import install -from src.version import softwareVersion +from pybitmessage.version import softwareVersion EXTRAS_REQUIRE = { 'gir': ['pygobject'], @@ -18,7 +18,7 @@ EXTRAS_REQUIRE = { 'sound;platform_system=="Windows"': ['winsound'], 'tor': ['stem'], 'docs': ['sphinx', 'sphinxcontrib-apidoc', 'm2r'], - 'qrcode':['qrcode'] + # 'qrcode':['qrcode'] } if sys.version_info[0] == 2: @@ -113,7 +113,7 @@ if __name__ == "__main__": classifiers=[ "License :: OSI Approved :: MIT License" "Operating System :: OS Independent", - "Programming Language :: Python :: 2.7 :: Only", + "Programming Language :: Python :: 3.7 :: Only", "Topic :: Internet", "Topic :: Security :: Cryptography", "Topic :: Software Development :: Libraries :: Python Modules", diff --git a/src/addresses.py b/src/addresses.py index 22747a27..8942af13 100755 --- a/src/addresses.py +++ b/src/addresses.py @@ -8,7 +8,7 @@ from struct import pack, unpack try: from debug import logger except ModuleNotFoundError: - from .debug import logger + from pybitmessage.debug import logger ALPHABET = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz" diff --git a/src/api.py b/src/api.py index d9196c9d..7b537f12 100755 --- a/src/api.py +++ b/src/api.py @@ -124,50 +124,59 @@ class singleAPI(StoppableThread): errno.WSAEADDRINUSE = errno.EADDRINUSE for attempt in range(50): try: + print('+++++++++++++++++++++++127+++++++++++++++') if attempt > 0: + print('+++++++++++++++++++++++128+++++++++++++++') logger.warning( 'Failed to start API listener on port %s', port) port = random.randint(32767, 65535) - print('pppppppppppppppppppppppppppppp') - print('port-{}'.format(port)) - print('pppppppppppppppppppppppppppppp') - print('!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!') - print('bbbbbbbbbbbbbbbbbbbbbbbbbbbbb') - print(BMConfigParser().get('bitmessagesettings', 'apiinterface')) - print('bbbbbbbbbbbbbbbbbbbbbbbbbbbbb') + print('+++++++++++++++++++++++133+++++++++++++++') + print('+++++++++++++++++++++++133+++++++++++++++') se = StoppableXMLRPCServer( (BMConfigParser().get( 'bitmessagesettings', 'apiinterface'), port), MySimpleXMLRPCRequestHandler, True, True) + print('+++++++++++++++++++++++140+++++++++++++++') except socket.error as e: + print('+++++++++++++++++++++++142+++++++++++++++') if e.errno in (errno.EADDRINUSE, errno.WSAEADDRINUSE): + print('+++++++++++++++++++++++144+++++++++++++++') continue else: if attempt > 0: + print('+++++++++++++++++++++++148+++++++++++++++') logger.warning('Setting apiport to %s', port) BMConfigParser().set( 'bitmessagesettings', 'apiport', str(port)) BMConfigParser().save() + print('+++++++++++++++++++++++153+++++++++++++++') break + print('+++++++++++++++++++++++156+++++++++++++++') se.register_introspection_functions() - + print('+++++++++++++++++++++++158+++++++++++++++') apiNotifyPath = BMConfigParser().safeGet( 'bitmessagesettings', 'apinotifypath') - + print('------------161-------------------') if apiNotifyPath: + print('------------162-------------------') logger.info('Trying to call %s', apiNotifyPath) + print('------------165-------------------') try: + print('------------167-------------------') subprocess.call([apiNotifyPath, "startingUp"]) except OSError: + print('------------170-------------------') logger.warning( 'Failed to call %s, removing apinotifypath setting', apiNotifyPath) BMConfigParser().remove_option( 'bitmessagesettings', 'apinotifypath') - + print('------------176-------------------') se.serve_forever() + print('---------178------------------------') + class MySimpleXMLRPCRequestHandler(SimpleXMLRPCRequestHandler): diff --git a/src/bitmessagecli.py b/src/bitmessagecli.py index b32fa174..14dec2b0 100755 --- a/src/bitmessagecli.py +++ b/src/bitmessagecli.py @@ -26,7 +26,7 @@ import xmlrpc.client as xmlrpclib try: from bmconfigparser import BMConfigParser except: - from .bmconfigparser import BMConfigParser + from pybitmessage.bmconfigparser import BMConfigParser api = '' keysName = 'keys.dat' diff --git a/src/bmconfigparser.py b/src/bmconfigparser.py index 078c0072..fcd82d61 100755 --- a/src/bmconfigparser.py +++ b/src/bmconfigparser.py @@ -11,8 +11,8 @@ try: import state from singleton import Singleton except ModuleNotFoundError: - from . import state - from .singleton import Singleton + from pybitmessage import state + from pybitmessage.singleton import Singleton BMConfigDefaults = { diff --git a/src/class_addressGenerator.py b/src/class_addressGenerator.py index bd228b09..65f826c2 100755 --- a/src/class_addressGenerator.py +++ b/src/class_addressGenerator.py @@ -18,18 +18,18 @@ try: from pyelliptic.openssl import OpenSSL from network.threads import StoppableThread except ModuleNotFoundError: - from . import defaults - from .import highlevelcrypto - from . import queues - from . import shared - from . import state - from . import tr - from .addresses import decodeAddress, encodeAddress, encodeVarint - from .bmconfigparser import BMConfigParser - from .fallback import RIPEMD160Hash - from .pyelliptic import arithmetic - from .pyelliptic.openssl import OpenSSL - from .network.threads import StoppableThread + from pybitmessage import defaults + from pybitmessage import highlevelcrypto + from pybitmessage import queues + from pybitmessage import shared + from pybitmessage import state + from pybitmessage import tr + from pybitmessage.addresses import decodeAddress, encodeAddress, encodeVarint + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.fallback import RIPEMD160Hash + from pybitmessage.pyelliptic import arithmetic + from pybitmessage.pyelliptic.openssl import OpenSSL + from pybitmessage.network.threads import StoppableThread class addressGenerator(StoppableThread): """A thread for creating addresses""" diff --git a/src/class_objectProcessor.py b/src/class_objectProcessor.py index 70cb5f54..07fa57bb 100755 --- a/src/class_objectProcessor.py +++ b/src/class_objectProcessor.py @@ -36,28 +36,28 @@ try: from network import bmproto from network.node import Peer except ModuleNotFoundError: - from . import helper_bitcoin - from . import helper_inbox - from . import helper_msgcoding - from . import helper_sent - from . import highlevelcrypto - from . import knownnodes - from . import l10n - from . import protocol - from . import queues - from . import shared - from . import state - from . import tr - from .addresses import ( + from pybitmessage import helper_bitcoin + from pybitmessage import helper_inbox + from pybitmessage import helper_msgcoding + from pybitmessage import helper_sent + from pybitmessage import highlevelcrypto + from pybitmessage import knownnodes + from pybitmessage import l10n + from pybitmessage import protocol + from pybitmessage import queues + from pybitmessage import shared + from pybitmessage import state + from pybitmessage import tr + from pybitmessage.addresses import ( calculateInventoryHash, decodeAddress, decodeVarint, encodeAddress, encodeVarint, varintDecodeError ) - from .bmconfigparser import BMConfigParser - from .fallback import RIPEMD160Hash - from .helper_ackPayload import genAckPayload - from .helper_sql import SqlBulkExecute, sqlExecute, sqlQuery - from .network import bmproto - from .network.node import Peer + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.fallback import RIPEMD160Hash + from pybitmessage.helper_ackPayload import genAckPayload + from pybitmessage.helper_sql import SqlBulkExecute, sqlExecute, sqlQuery + from pybitmessage.network import bmproto + from pybitmessage.network.node import Peer # pylint: disable=too-many-locals, too-many-return-statements, too-many-branches, too-many-statements logger = logging.getLogger('default') diff --git a/src/class_singleCleaner.py b/src/class_singleCleaner.py index 36fe072e..11e66445 100755 --- a/src/class_singleCleaner.py +++ b/src/class_singleCleaner.py @@ -37,16 +37,16 @@ try: from network.threads import StoppableThread except ModuleNotFoundError: - from . import shared - from . import knownnodes - from . import queues - from . import state - from . import tr - from .bmconfigparser import BMConfigParser - from .helper_sql import sqlExecute, sqlQuery - from .inventory import Inventory - from .network.connectionpool import BMConnectionPool - from .network.threads import StoppableThread + from pybitmessage import shared + from pybitmessage import knownnodes + from pybitmessage import queues + from pybitmessage import state + from pybitmessage import tr + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.helper_sql import sqlExecute, sqlQuery + from pybitmessage.inventory import Inventory + from pybitmessage.network.connectionpool import BMConnectionPool + from pybitmessage.network.threads import StoppableThread #: Equals 4 weeks. You could make this longer if you want #: but making it shorter would not be advisable because diff --git a/src/class_singleWorker.py b/src/class_singleWorker.py index 4707f5cb..4dacf458 100755 --- a/src/class_singleWorker.py +++ b/src/class_singleWorker.py @@ -35,26 +35,26 @@ try: from inventory import Inventory from network.threads import StoppableThread except ModuleNotFoundError: - from . import defaults - from . import helper_inbox - from . import helper_msgcoding - from . import helper_random - from . import highlevelcrypto - from . import l10n - from . import proofofwork - from . import protocol - from . import queues - from . import shared - from . import state - from . import tr - from .addresses import ( + from pybitmessage import defaults + from pybitmessage import helper_inbox + from pybitmessage import helper_msgcoding + from pybitmessage import helper_random + from pybitmessage import highlevelcrypto + from pybitmessage import l10n + from pybitmessage import proofofwork + from pybitmessage import protocol + from pybitmessage import queues + from pybitmessage import shared + from pybitmessage import state + from pybitmessage import tr + from pybitmessage.addresses import ( calculateInventoryHash, decodeAddress, decodeVarint, encodeVarint ) - from .bmconfigparser import BMConfigParser - from .helper_sql import sqlExecute, sqlQuery - from .inventory import Inventory - from .network.threads import StoppableThread + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.helper_sql import sqlExecute, sqlQuery + from pybitmessage.inventory import Inventory + from pybitmessage.network.threads import StoppableThread # This thread, of which there is only one, does the heavy lifting: # calculating POWs. diff --git a/src/class_smtpDeliver.py b/src/class_smtpDeliver.py index 2612a932..b9940834 100755 --- a/src/class_smtpDeliver.py +++ b/src/class_smtpDeliver.py @@ -14,10 +14,10 @@ try: from network.threads import StoppableThread except ModuleNotFoundError: - from . import queues - from . import state - from .bmconfigparser import BMConfigParser - from .network.threads import StoppableThread + from pybitmessage import queues + from pybitmessage import state + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.network.threads import StoppableThread SMTPDOMAIN = "bmaddr.lan" diff --git a/src/class_smtpServer.py b/src/class_smtpServer.py index f0818507..203aab4f 100755 --- a/src/class_smtpServer.py +++ b/src/class_smtpServer.py @@ -21,13 +21,13 @@ try: from network.threads import StoppableThread from version import softwareVersion except ModuleNotFoundError: - from . import queues - from .addresses import decodeAddress - from .bmconfigparser import BMConfigParser - from .helper_ackPayload import genAckPayload - from .helper_sql import sqlExecute - from .network.threads import StoppableThread - from .version import softwareVersion + from pybitmessage import queues + from pybitmessage.addresses import decodeAddress + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.helper_ackPayload import genAckPayload + from pybitmessage.helper_sql import sqlExecute + from pybitmessage.network.threads import StoppableThread + from pybitmessage.version import softwareVersion SMTPDOMAIN = "bmaddr.lan" LISTENPORT = 8425 diff --git a/src/class_sqlThread.py b/src/class_sqlThread.py index 95f07adc..94092549 100755 --- a/src/class_sqlThread.py +++ b/src/class_sqlThread.py @@ -18,14 +18,14 @@ try: from bmconfigparser import BMConfigParser from debug import logger except ModuleNotFoundError: - from . import helper_sql - from . import helper_startup - from . import paths - from . import queues - from . import state - from . import tr - from .bmconfigparser import BMConfigParser - from .debug import logger + from pybitmessage import helper_sql + from pybitmessage import helper_startup + from pybitmessage import paths + from pybitmessage import queues + from pybitmessage import state + from pybitmessage import tr + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.debug import logger # pylint: disable=attribute-defined-outside-init,protected-access diff --git a/src/debug.py b/src/debug.py index dfd7c4f9..03fa7004 100755 --- a/src/debug.py +++ b/src/debug.py @@ -44,8 +44,8 @@ try: import helper_startup import state except ModuleNotFoundError: - from . import helper_startup, state - from . import state + from pybitmessage import helper_startup, state + from pybitmessage import state helper_startup.loadConfig() # Now can be overriden from a config file, which uses standard python diff --git a/src/depends.py b/src/depends.py index 9cfe316c..78f3f97f 100755 --- a/src/depends.py +++ b/src/depends.py @@ -9,7 +9,7 @@ from importlib import import_module try: import state except ModuleNotFoundError: - from . import state + from pybitmessage import state # Only really old versions of Python don't have sys.hexversion. We don't # support them. The logging module was introduced in Python 2.3 @@ -278,8 +278,10 @@ def check_openssl(): openssl_cflags = None cflags_regex = re.compile(r'(?:OPENSSL_NO_)(AES|EC|ECDH|ECDSA)(?!\w)') - - import pyelliptic.openssl + try: + from pyelliptic import openssl + except: + from pybitmessage.pyelliptic import openssl for path in paths: logger.info('Checking OpenSSL at %s', path) @@ -290,7 +292,7 @@ def check_openssl(): logger.info('OpenSSL Name: %s', library._name) try: openssl_version, openssl_hexversion, openssl_cflags = \ - pyelliptic.openssl.get_version(library) + openssl.get_version(library) except AttributeError: # sphinx chokes return True if not openssl_version: diff --git a/src/helper_ackPayload.py b/src/helper_ackPayload.py index 04205f7e..6e90069e 100755 --- a/src/helper_ackPayload.py +++ b/src/helper_ackPayload.py @@ -10,9 +10,9 @@ try: import highlevelcrypto from addresses import encodeVarint except ModuleNotFoundError: - from . import helper_random - from . import highlevelcrypto - from .addresses import encodeVarint + from pybitmessage import helper_random + from pybitmessage import highlevelcrypto + from pybitmessage.addresses import encodeVarint def genAckPayload(streamNumber=1, stealthLevel=0): """ diff --git a/src/helper_bitcoin.py b/src/helper_bitcoin.py index b24bd79b..17d64166 100755 --- a/src/helper_bitcoin.py +++ b/src/helper_bitcoin.py @@ -7,8 +7,8 @@ try: from debug import logger from pyelliptic import arithmetic except ModuleNotFoundError: - from .debug import logger - from .pyelliptic import arithmetic + from pybitmessage.debug import logger + from pybitmessage.pyelliptic import arithmetic def calculateBitcoinAddressFromPubkey(pubkey): diff --git a/src/helper_generic.py b/src/helper_generic.py index cfb26278..c387e320 100755 --- a/src/helper_generic.py +++ b/src/helper_generic.py @@ -20,11 +20,11 @@ try: import shutdown from debug import logger except ModuleNotFoundError: - from . import shared - from . import state - from . import queues - from . import shutdown - from .debug import logger + from pybitmessage import shared + from pybitmessage import state + from pybitmessage import queues + from pybitmessage import shutdown + from pybitmessage.debug import logger def powQueueSize(): curWorkerQueue = queues.workerQueue.qsize() diff --git a/src/helper_inbox.py b/src/helper_inbox.py index f385d935..b24ed370 100755 --- a/src/helper_inbox.py +++ b/src/helper_inbox.py @@ -4,8 +4,8 @@ try: import queues from helper_sql import sqlExecute, sqlQuery except ModuleNotFoundError: - from . import queues - from .helper_sql import sqlExecute, sqlQuery + from pybitmessage import queues + from pybitmessage.helper_sql import sqlExecute, sqlQuery def insert(t): """Perform an insert into the "inbox" table""" diff --git a/src/helper_msgcoding.py b/src/helper_msgcoding.py index e257735b..5c7c8a8a 100755 --- a/src/helper_msgcoding.py +++ b/src/helper_msgcoding.py @@ -11,10 +11,10 @@ try: from tr import _translate except ModuleNotFoundError: - from . import messagetypes - from .bmconfigparser import BMConfigParser - from .debug import logger - from .tr import _translate + from pybitmessage import messagetypes + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.debug import logger + from pybitmessage.tr import _translate try: import msgpack diff --git a/src/helper_random.py b/src/helper_random.py index 24ac28cd..ba974c69 100755 --- a/src/helper_random.py +++ b/src/helper_random.py @@ -8,7 +8,7 @@ import random try: from pyelliptic.openssl import OpenSSL except ModuleNotFoundError: - from .pyelliptic.openssl import OpenSSL + from pybitmessage.pyelliptic.openssl import OpenSSL NoneType = type(None) diff --git a/src/helper_sent.py b/src/helper_sent.py index adc8719f..71c2722d 100755 --- a/src/helper_sent.py +++ b/src/helper_sent.py @@ -4,7 +4,7 @@ Insert values into sent table try: from helper_sql import sqlExecute except ModuleNotFoundError: - from .helper_sql import sqlExecute + from pybitmessage.helper_sql import sqlExecute def insert(t): """Perform an insert into the `sent` table""" diff --git a/src/helper_startup.py b/src/helper_startup.py index 9f6f515c..68f41707 100755 --- a/src/helper_startup.py +++ b/src/helper_startup.py @@ -16,11 +16,11 @@ try: import state from bmconfigparser import BMConfigParser except ModuleNotFoundError: - from . import defaults - from . import helper_random ,paths, state - from .bmconfigparser import BMConfigParser + from pybitmessage import defaults + from pybitmessage import helper_random ,paths, state + from pybitmessage.bmconfigparser import BMConfigParser try: - from .plugins.plugin import get_plugin + from pybitmessage.plugins.plugin import get_plugin except ImportError: get_plugin = None diff --git a/src/highlevelcrypto.py b/src/highlevelcrypto.py index 94f4554e..18f69ff2 100755 --- a/src/highlevelcrypto.py +++ b/src/highlevelcrypto.py @@ -14,10 +14,10 @@ try: from pyelliptic import OpenSSL from pyelliptic import arithmetic as a except ModuleNotFoundError: - from . import pyelliptic - from .bmconfigparser import BMConfigParser - from .pyelliptic import OpenSSL - from .pyelliptic import arithmetic as a + from pybitmessage import pyelliptic + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.pyelliptic import OpenSSL + from pybitmessage.pyelliptic import arithmetic as a def makeCryptor(privkey): diff --git a/src/l10n.py b/src/l10n.py index dc243c1f..b539e2d0 100755 --- a/src/l10n.py +++ b/src/l10n.py @@ -8,7 +8,7 @@ import time try: from bmconfigparser import BMConfigParser except ModuleNotFoundError: - from .bmconfigparser import BMConfigParser + from pybitmessage.bmconfigparser import BMConfigParser logger = logging.getLogger('default') diff --git a/src/main.py b/src/main.py index cb21ebd5..3497c5df 100755 --- a/src/main.py +++ b/src/main.py @@ -3,8 +3,8 @@ try: import state from bitmessagemain import main except ModuleNotFoundError: - from . import state - from .bitmessagemain import main + from pybitmessage import state + from pybitmessage.bitmessagemain import main # import state @@ -14,5 +14,5 @@ if __name__ == '__main__': try: from bitmessagemain import main except ModuleNotFoundError: - from .bitmessagemain import main + from pybitmessage.bitmessagemain import main main() diff --git a/src/messagetypes/__init__.py b/src/messagetypes/__init__.py index ddd3cf35..b31ebb00 100755 --- a/src/messagetypes/__init__.py +++ b/src/messagetypes/__init__.py @@ -60,7 +60,7 @@ else: import_module(".{}".format(splitted[0]), "messagetypes") except ModuleNotFoundError: try: - from . import chatmsg + from pybitmessage.messagetypes import chatmsg except ImportError: logger.error("Error importing %s", mod, exc_info=True) else: diff --git a/src/multiqueue.py b/src/multiqueue.py index 95fd97e7..21380a85 100755 --- a/src/multiqueue.py +++ b/src/multiqueue.py @@ -9,7 +9,7 @@ from collections import deque try: import helper_random except ModuleNotFoundError: - from . import helper_random + from pybitmessage import helper_random class MultiQueue(Queue.Queue): """A base queue class""" diff --git a/src/namecoin.py b/src/namecoin.py index 645624c3..bfebbb84 100755 --- a/src/namecoin.py +++ b/src/namecoin.py @@ -17,11 +17,11 @@ try: from bmconfigparser import BMConfigParser from debug import logger except ModuleNotFoundError: - from . import defaults - from . import tr # translate - from .addresses import decodeAddress - from .bmconfigparser import BMConfigParser - from .debug import logger + from pybitmessage import defaults + from pybitmessage import tr # translate + from pybitmessage.addresses import decodeAddress + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.debug import logger configSection = "bitmessagesettings" diff --git a/src/network/__init__.py b/src/network/__init__.py index e58c95b0..595a72cf 100755 --- a/src/network/__init__.py +++ b/src/network/__init__.py @@ -10,7 +10,7 @@ try: from network.threads import StoppableThread from network.uploadthread import UploadThread -except ModuleNotFoundError: +except (ModuleNotFoundError,ImportError): from pybitmessage.network.addrthread import AddrThread from pybitmessage.network.announcethread import AnnounceThread from pybitmessage.network.connectionpool import BMConnectionPool diff --git a/src/network/bmproto.py b/src/network/bmproto.py index 6a5997e2..91802b7c 100755 --- a/src/network/bmproto.py +++ b/src/network/bmproto.py @@ -33,7 +33,7 @@ try: from network.node import Node, Peer from network.randomtrackingdict import RandomTrackingDict from queues import objectProcessorQueue, portCheckerQueue, invQueue -except ModuleNotFoundError: +except (ModuleNotFoundError,ImportError): from pybitmessage import addresses from pybitmessage.network import connectionpool from pybitmessage import knownnodes diff --git a/src/network/connectionpool.py b/src/network/connectionpool.py index eb106345..69a1907e 100755 --- a/src/network/connectionpool.py +++ b/src/network/connectionpool.py @@ -21,7 +21,8 @@ try: TCPServer, Socks5BMConnection, Socks4aBMConnection, TCPConnection, bootstrap) from network.udp import UDPSocket from singleton import Singleton -except ModuleNotFoundError: + from network.node import Peer +except (ModuleNotFoundError,ImportError): from pybitmessage.network import asyncore_pollchoose as asyncore from pybitmessage import helper_random from pybitmessage import knownnodes @@ -35,8 +36,7 @@ except ModuleNotFoundError: TCPServer, Socks5BMConnection, Socks4aBMConnection, TCPConnection, bootstrap) from pybitmessage.network.udp import UDPSocket from pybitmessage.singleton import Singleton - -from .node import Peer + from pybitmessage.network.node import Peer logger = logging.getLogger('default') @@ -187,6 +187,7 @@ class BMConnectionPool(object): @staticmethod def getListeningIP(): """What IP are we supposed to be listening on?""" + #its need to this fix if BMConfigParser().safeGet( "bitmessagesettings", "onionhostname").endswith(".onion"): host = BMConfigParser().safeGet( diff --git a/src/network/http.py b/src/network/http.py index 385564a5..55f867ab 100755 --- a/src/network/http.py +++ b/src/network/http.py @@ -8,11 +8,11 @@ try: from socks5 import Socks5Connection, Socks5Resolver from socks4a import Socks4aConnection, Socks4aResolver except ModuleNotFoundError: - from .advanceddispatcher import AdvancedDispatcher - from . import asyncore_pollchoose as asyncore - from .proxy import ProxyError - from .socks5 import Socks5Connection, Socks5Resolver - from .socks4a import Socks4aConnection, Socks4aResolver + from pybitmessage.network.advanceddispatcher import AdvancedDispatcher + import pybitmessage.network.asyncore_pollchoose as asyncore + from pybitmessage.network.proxy import ProxyError + from pybitmessage.network.socks5 import Socks5Connection, Socks5Resolver + from pybitmessage.network.socks4a import Socks4aConnection, Socks4aResolver class HttpError(ProxyError): pass diff --git a/src/network/objectracker.py b/src/network/objectracker.py index a6e083a0..226e2374 100755 --- a/src/network/objectracker.py +++ b/src/network/objectracker.py @@ -7,7 +7,7 @@ try: from network.connectionpool import connectionpool from network.dandelion import Dandelion from network.randomtrackingdict import RandomTrackingDict -except: +except (ModuleNotFoundError,ImportError): from pybitmessage.network import connectionpool from pybitmessage.network.dandelion import Dandelion from pybitmessage.network.randomtrackingdict import RandomTrackingDict diff --git a/src/network/stats.py b/src/network/stats.py index 0be8c3ca..112f130f 100755 --- a/src/network/stats.py +++ b/src/network/stats.py @@ -8,9 +8,9 @@ try: from network.connectionpool import BMConnectionPool from network.objectracker import missingObjects except ModuleNotFoundError: - from . import asyncore_pollchoose as asyncore - from .connectionpool import BMConnectionPool - from .objectracker import missingObjects + from pybitmessage.network import asyncore_pollchoose as asyncore + from pybitmessage.network.connectionpool import BMConnectionPool + from pybitmessage.network.objectracker import missingObjects lastReceivedTimestamp = time.time() lastReceivedBytes = 0 diff --git a/src/network/tcp.py b/src/network/tcp.py index 5d8f9e8f..e18fcc60 100755 --- a/src/network/tcp.py +++ b/src/network/tcp.py @@ -29,9 +29,9 @@ try: from network.socks4a import Socks4aConnection from network.socks5 import Socks5Connection from network.tls import TLSDispatcher - from .node import Peer + from network.node import Peer from queues import UISignalQueue, invQueue, receiveDataQueue -except ModuleNotFoundError: +except (ModuleNotFoundError,ImportError): from pybitmessage import addresses from pybitmessage import helper_random from pybitmessage import knownnodes diff --git a/src/network/udp.py b/src/network/udp.py index 34151aaa..ce610a9c 100755 --- a/src/network/udp.py +++ b/src/network/udp.py @@ -13,7 +13,7 @@ try: import state from queues import receiveDataQueue -except ModuleNotFoundError: +except (ModuleNotFoundError,ImportError): from pybitmessage import protocol from pybitmessage import state from pybitmessage.network.bmproto import BMProto diff --git a/src/openclpow.py b/src/openclpow.py index 0936fbef..ce742757 100755 --- a/src/openclpow.py +++ b/src/openclpow.py @@ -11,10 +11,10 @@ try: from debug import logger from state import shutdown except ModuleNotFoundError: - from . import paths - from .bmconfigparser import BMConfigParser - from .debug import logger - from .state import shutdown + from pybitmessage import paths + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.debug import logger + from pybitmessage.state import shutdown libAvailable = True ctx = False diff --git a/src/proofofwork.py b/src/proofofwork.py index 0a611ded..6be905ca 100755 --- a/src/proofofwork.py +++ b/src/proofofwork.py @@ -22,13 +22,13 @@ try: except ModuleNotFoundError: try: - from . import openclpow - from . import paths - from . import queues - from . import state - from . import tr - from .bmconfigparser import BMConfigParser - from .debug import logger + from pybitmessage import openclpow + from pybitmessage import paths + from pybitmessage import queues + from pybitmessage import state + from pybitmessage import tr + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.debug import logger except ImportError: import openclpow try: diff --git a/src/protocol.py b/src/protocol.py index be699edc..6831da2d 100755 --- a/src/protocol.py +++ b/src/protocol.py @@ -25,16 +25,16 @@ try: from helper_sql import sqlExecute from version import softwareVersion except ModuleNotFoundError: - from . import defaults - from . import highlevelcrypto - from . import state - from .addresses import ( + from pybitmessage import defaults + from pybitmessage import highlevelcrypto + from pybitmessage import state + from pybitmessage.addresses import ( encodeVarint, decodeVarint, decodeAddress, varintDecodeError) - from .bmconfigparser import BMConfigParser - from .debug import logger - from .fallback import RIPEMD160Hash - from .helper_sql import sqlExecute - from .version import softwareVersion + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.debug import logger + from pybitmessage.fallback import RIPEMD160Hash + from pybitmessage.helper_sql import sqlExecute + from pybitmessage.version import softwareVersion # Service flags #: This is a normal network node diff --git a/src/pyelliptic/__init__.py b/src/pyelliptic/__init__.py index cafa89c9..054d012b 100755 --- a/src/pyelliptic/__init__.py +++ b/src/pyelliptic/__init__.py @@ -8,13 +8,21 @@ For modern cryptography with ECC, AES, HMAC, Blowfish, ... This is an abandoned package maintained inside of the PyBitmessage. """ +try: + from pyelliptic.cipher import Cipher + from pyelliptic.ecc import ECC + from pyelliptic.eccblind import ECCBlind + from pyelliptic.eccblindchain import ECCBlindChain + from pyelliptic.hash import hmac_sha256, hmac_sha512, pbkdf2 + from pyelliptic.openssl import OpenSSL +except: + from pybitmessage.pyelliptic.cipher import Cipher + from pybitmessage.pyelliptic.ecc import ECC + from pybitmessage.pyelliptic.eccblind import ECCBlind + from pybitmessage.pyelliptic.eccblindchain import ECCBlindChain + from pybitmessage.pyelliptic.hash import hmac_sha256, hmac_sha512, pbkdf2 + from pybitmessage.pyelliptic.openssl import OpenSSL -from .cipher import Cipher -from .ecc import ECC -from .eccblind import ECCBlind -from .eccblindchain import ECCBlindChain -from .hash import hmac_sha256, hmac_sha512, pbkdf2 -from .openssl import OpenSSL __version__ = '1.3' diff --git a/src/pyelliptic/cipher.py b/src/pyelliptic/cipher.py index 52348232..efe9dcef 100755 --- a/src/pyelliptic/cipher.py +++ b/src/pyelliptic/cipher.py @@ -5,9 +5,11 @@ Symmetric Encryption """ # Copyright (C) 2011 Yann GUIBET # See LICENSE for details. - -from .openssl import OpenSSL - +try: + from pyelliptic.openssl import OpenSSL +except: + from pybitmessage.pyelliptic.openssl import OpenSSL + # pylint: disable=redefined-builtin class Cipher(object): diff --git a/src/pyelliptic/eccblind.py b/src/pyelliptic/eccblind.py index a417451e..04d80bff 100755 --- a/src/pyelliptic/eccblind.py +++ b/src/pyelliptic/eccblind.py @@ -14,7 +14,10 @@ import time from hashlib import sha256 from struct import pack, unpack -from .openssl import OpenSSL +try: + from pyelliptic.openssl import OpenSSL +except: + from pybitmessage.pyelliptic.openssl import OpenSSL # first byte in serialisation can contain data Y_BIT = 0x01 diff --git a/src/pyelliptic/hash.py b/src/pyelliptic/hash.py index 70c9a6ce..76a8d858 100755 --- a/src/pyelliptic/hash.py +++ b/src/pyelliptic/hash.py @@ -4,7 +4,10 @@ Wrappers for hash functions from OpenSSL. # Copyright (C) 2011 Yann GUIBET # See LICENSE for details. -from .openssl import OpenSSL +try: + from pyelliptic.openssl import OpenSSL +except: + from pybitmessage.pyelliptic.openssl import OpenSSL # For python3 diff --git a/src/queues.py b/src/queues.py index a1cb8a91..ca122c14 100755 --- a/src/queues.py +++ b/src/queues.py @@ -7,7 +7,7 @@ import time try: from multiqueue import MultiQueue except ModuleNotFoundError: - from .multiqueue import MultiQueue + from pybitmessage.multiqueue import MultiQueue class ObjectProcessorQueue(Queue.Queue): """Special queue class using lock for `.threads.objectProcessor`""" diff --git a/src/shared.py b/src/shared.py index 99341c6c..ce048868 100755 --- a/src/shared.py +++ b/src/shared.py @@ -31,14 +31,14 @@ try: from helper_sql import sqlQuery except ModuleNotFoundError: try: - from . import state - from .bmconfigparser import BMConfigParser - from .addresses import decodeAddress, encodeVarint - from .debug import logger - from . import highlevelcrypto - from .helper_sql import sqlQuery + from pybitmessage import state + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.addresses import decodeAddress, encodeVarint + from pybitmessage.debug import logger + from pybitmessage import highlevelcrypto + from pybitmessage.helper_sql import sqlQuery platform = '' - from .pyelliptic import arithmetic + from pybitmessage.pyelliptic import arithmetic except ImportError: import state from bmconfigparser import BMConfigParser diff --git a/src/singleinstance.py b/src/singleinstance.py index a90b2234..f0cab94d 100755 --- a/src/singleinstance.py +++ b/src/singleinstance.py @@ -10,7 +10,7 @@ import sys try: import state except ModuleNotFoundError: - from . import state + from pybitmessage import state try: import fcntl # @UnresolvedImport except ImportError: diff --git a/src/tests/test_api.py b/src/tests/test_api.py index e3881330..dd2504f6 100755 --- a/src/tests/test_api.py +++ b/src/tests/test_api.py @@ -13,6 +13,10 @@ from .tests_compatibility import utils class TestAPIProto(TestProcessProto): """Test case logic for testing API""" _process_cmd = ['pybitmessage', '-t'] + # _files = ( + # 'keys.dat', 'messages.dat', 'knownnodes.dat', + # '.api_started', 'unittest.lock' + # ) @classmethod def setUpClass(cls): @@ -21,16 +25,20 @@ class TestAPIProto(TestProcessProto): print('@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@') """Setup XMLRPC proxy for pybitmessage API""" - super(TestAPIProto, cls).setUpClass() + # super(TestAPIProto, cls).tearDownClass() + try: + super(TestAPIProto, cls).setUpClass() + except: + pass + cls.addresses = [] cls.api = xmlrpclib.ServerProxy( - "http://username:password@127.0.0.1:8442/") + "http://username:password@127.0.0.1:8442/") for _ in range(5): if cls._get_readline('.api_started'): return time.sleep(1) - class TestAPIShutdown(TestAPIProto, TestProcessShutdown): """Separate test case for API command 'shutdown'""" def test_shutdown(self): @@ -66,7 +74,7 @@ class TestAPI(TestAPIProto): ' authentication at all.' ) - def test_connection(self): + def test_connection(self): """API command 'helloWorld'""" print('---------67--------------------') print('---------68--------------------') diff --git a/src/tests/test_process.py b/src/tests/test_process.py index b9c4cb12..898eb0f2 100755 --- a/src/tests/test_process.py +++ b/src/tests/test_process.py @@ -30,13 +30,9 @@ class TestProcessProto(unittest.TestCase): """ _process_cmd = ['pybitmessage', '-d'] _threads_count = 15 - ''' - debug.log is removed because debug.log are pending to implement on the - python3 - ''' _files = ( - 'keys.dat', 'messages.dat', 'knownnodes.dat', - '.api_started', 'unittest.lock' + 'keys.dat', 'debug.log', 'messages.dat', 'knownnodes.dat', + '.api_started', 'unittest.lock','singleton.lock' ) @classmethod @@ -55,7 +51,7 @@ class TestProcessProto(unittest.TestCase): pfile = os.path.join(cls.home, pfile) try: return open(pfile, 'rb').readline().strip() - except (OSError, IOError): + except (OSError, IOError, FileNotFoundError): pass @classmethod @@ -78,11 +74,14 @@ class TestProcessProto(unittest.TestCase): @classmethod def tearDownClass(cls): """Ensures that pybitmessage stopped and removes files""" + print('######################################') + print('is this are even called tearDownClass') + print('######################################') try: if not cls._stop_process(): print(open(os.path.join(cls.home, 'debug.log'), 'rb').read()) cls.process.kill() - except psutil.NoSuchProcess: + except (psutil.NoSuchProcess, FileNotFoundError, AttributeError) as e: pass finally: cls._cleanup_files() @@ -128,7 +127,7 @@ class TestProcess(TestProcessProto): """A test case for pybitmessage process""" def test_process_name(self): """Check PyBitmessage process name""" - self.assertEqual(self.process.name(), 'PyBitmessage') + self.assertEqual(self.process.name(), 'pybitmessage') def test_files(self): """Check existence of PyBitmessage files""" diff --git a/src/threads.py b/src/threads.py index f88897d7..531b6470 100755 --- a/src/threads.py +++ b/src/threads.py @@ -23,11 +23,11 @@ try: from class_singleWorker import singleWorker from class_sqlThread import sqlThread except ModuleNotFoundError: - from .class_addressGenerator import addressGenerator - from .class_objectProcessor import objectProcessor - from .class_singleCleaner import singleCleaner - from .class_singleWorker import singleWorker - from .class_sqlThread import sqlThread + from pybitmessage.class_addressGenerator import addressGenerator + from pybitmessage.class_objectProcessor import objectProcessor + from pybitmessage.class_singleCleaner import singleCleaner + from pybitmessage.class_singleWorker import singleWorker + from pybitmessage.class_sqlThread import sqlThread try: import prctl except ImportError: diff --git a/src/tr.py b/src/tr.py index 32e5f025..6b92b9ba 100755 --- a/src/tr.py +++ b/src/tr.py @@ -5,7 +5,7 @@ import os try: import state except ModuleNotFoundError: - from . import state + from pybitmessage import state class translateClass(object): """ This is used so that the translateText function can be used diff --git a/src/upnp.py b/src/upnp.py index 30f58296..ded7ed98 100755 --- a/src/upnp.py +++ b/src/upnp.py @@ -23,15 +23,15 @@ try: from network.node import Peer from network.threads import StoppableThread except ModuleNotFoundError: - from . import knownnodes - from . import queues - from . import state - from . import tr - from .bmconfigparser import BMConfigParser - from .debug import logger - from .network.connectionpool import BMConnectionPool - from .network.node import Peer - from .network.threads import StoppableThread + from pybitmessage import knownnodes + from pybitmessage import queues + from pybitmessage import state + from pybitmessage import tr + from pybitmessage.bmconfigparser import BMConfigParser + from pybitmessage.debug import logger + from pybitmessage.network.connectionpool import BMConnectionPool + from pybitmessage.network.node import Peer + from pybitmessage.network.threads import StoppableThread def createRequestXML(service, action, arguments=None):