initial commit for python forward porting
This commit is contained in:
parent
fad7f3aeb4
commit
afb368e770
|
@ -180,7 +180,6 @@ def decodeAddress(address):
|
|||
data (almost certainly a ripe hash))
|
||||
"""
|
||||
# pylint: disable=too-many-return-statements,too-many-statements,too-many-return-statements,too-many-branches
|
||||
|
||||
address = str(address).strip()
|
||||
|
||||
if address[:3] == 'BM-':
|
||||
|
@ -192,7 +191,8 @@ def decodeAddress(address):
|
|||
return status, 0, 0, ''
|
||||
# after converting to hex, the string will be prepended
|
||||
# with a 0x and appended with a L
|
||||
hexdata = hex(integer)[2:-1]
|
||||
# import pdb;pdb.set_trace()
|
||||
hexdata = hex(integer)[2:]
|
||||
|
||||
if len(hexdata) % 2 != 0:
|
||||
hexdata = '0' + hexdata
|
||||
|
@ -248,7 +248,7 @@ def decodeAddress(address):
|
|||
embeddedRipeData
|
||||
elif len(embeddedRipeData) == 18:
|
||||
return status, addressVersionNumber, streamNumber, \
|
||||
'\x00\x00' + embeddedRipeData
|
||||
'\x00\x00'.encode('utf-8') + embeddedRipeData
|
||||
elif len(embeddedRipeData) < 18:
|
||||
return 'ripetooshort', 0, 0, ''
|
||||
elif len(embeddedRipeData) > 20:
|
||||
|
|
|
@ -984,6 +984,7 @@ class NavigateApp(App): # pylint: disable=too-many-public-methods
|
|||
|
||||
def build(self):
|
||||
"""Method builds the widget."""
|
||||
import os
|
||||
main_widget = Builder.load_file(
|
||||
os.path.join(os.path.dirname(__file__), 'main.kv'))
|
||||
self.nav_drawer = Navigatorss()
|
||||
|
|
|
@ -179,13 +179,13 @@ def signal_handler(signum, frame):
|
|||
if shared.thisapp.daemon or not state.enableGUI:
|
||||
shutdown.doCleanShutdown()
|
||||
else:
|
||||
print '# Thread: %s(%d)' % (thread.name, thread.ident)
|
||||
print ('# Thread: {}({})'.format(thread.name, thread.ident))
|
||||
for filename, lineno, name, line in traceback.extract_stack(frame):
|
||||
print 'File: "%s", line %d, in %s' % (filename, lineno, name)
|
||||
print ("File: '{}', line {}, in {}" .format(filename, lineno, name))
|
||||
if line:
|
||||
print ' %s' % line.strip()
|
||||
print 'Unfortunately you cannot use Ctrl+C when running the UI \
|
||||
because the UI captures the signal.'
|
||||
print (' {}'.format(line.strip()))
|
||||
print('Unfortunately you cannot use Ctrl+C when running the UI \
|
||||
because the UI captures the signal.')
|
||||
|
||||
|
||||
class Main: # pylint: disable=no-init, old-style-class
|
||||
|
@ -282,7 +282,7 @@ class Main: # pylint: disable=no-init, old-style-class
|
|||
|
||||
if daemon:
|
||||
with shared.printLock:
|
||||
print 'Running as a daemon. Send TERM signal to end.'
|
||||
print('Running as a daemon. Send TERM signal to end.')
|
||||
self.daemonize()
|
||||
|
||||
self.setSignalHandler()
|
||||
|
@ -405,7 +405,7 @@ class Main: # pylint: disable=no-init, old-style-class
|
|||
if state.curses:
|
||||
if not depends.check_curses():
|
||||
sys.exit()
|
||||
print 'Running with curses'
|
||||
print('Running with curses')
|
||||
import bitmessagecurses
|
||||
bitmessagecurses.runwrapper()
|
||||
|
||||
|
@ -498,23 +498,22 @@ class Main: # pylint: disable=no-init, old-style-class
|
|||
# signal.signal(signal.SIGINT, signal.SIG_DFL)
|
||||
|
||||
@staticmethod
|
||||
def usage():
|
||||
"""After passing argument, method displays the usages"""
|
||||
print 'Usage: ' + sys.argv[0] + ' [OPTIONS]'
|
||||
print '''
|
||||
Options:
|
||||
def usage(self):
|
||||
print('Usage: ' + sys.argv[0] + ' [OPTIONS]')
|
||||
print ('''
|
||||
Options:
|
||||
-h, --help show this help message and exit
|
||||
-c, --curses use curses (text mode) interface
|
||||
-d, --daemon run in daemon (background) mode
|
||||
-t, --test dryrun, make testing
|
||||
|
||||
All parameters are optional.
|
||||
'''
|
||||
All parameters are optional.
|
||||
''')
|
||||
|
||||
def stop(self): # pylint: disable=no-self-use
|
||||
"""Method helps to stop the Bitmessage Deamon"""
|
||||
with shared.printLock:
|
||||
print 'Stopping Bitmessage Deamon.'
|
||||
print('Stopping Bitmessage Deamon.')
|
||||
shutdown.doCleanShutdown()
|
||||
|
||||
# ..todo: nice function but no one is using this
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
from PyQt4 import QtCore, QtGui
|
||||
from Queue import Queue
|
||||
from queue.Queue import Queue
|
||||
from time import time
|
||||
|
||||
class BMStatusBar(QtGui.QStatusBar):
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
BMConfigParser class definition and default configuration settings
|
||||
"""
|
||||
|
||||
import ConfigParser
|
||||
import configparser
|
||||
import shutil
|
||||
import os
|
||||
from datetime import datetime
|
||||
|
@ -42,35 +42,35 @@ BMConfigDefaults = {
|
|||
|
||||
|
||||
@Singleton
|
||||
class BMConfigParser(ConfigParser.SafeConfigParser):
|
||||
"""Singleton class inherited from ConfigParser.SafeConfigParser
|
||||
class BMConfigParser(configparser.ConfigParser):
|
||||
"""Singleton class inherited from ConfigParsedadfeConfigParser
|
||||
with additional methods specific to bitmessage config."""
|
||||
|
||||
_temp = {}
|
||||
|
||||
def set(self, section, option, value=None):
|
||||
if self._optcre is self.OPTCRE or value:
|
||||
if not isinstance(value, basestring):
|
||||
if not isinstance(value, str):
|
||||
raise TypeError("option values must be strings")
|
||||
if not self.validate(section, option, value):
|
||||
raise ValueError("Invalid value %s" % value)
|
||||
return ConfigParser.ConfigParser.set(self, section, option, value)
|
||||
return configparser.ConfigParser.set(self, section, option, value)
|
||||
|
||||
def get(self, section, option, raw=False, variables=None):
|
||||
try:
|
||||
if section == "bitmessagesettings" and option == "timeformat":
|
||||
return ConfigParser.ConfigParser.get(
|
||||
self, section, option, raw, variables)
|
||||
return configparser.ConfigParser.get(
|
||||
self, section, option, raw=True, vars=variables)
|
||||
try:
|
||||
return self._temp[section][option]
|
||||
except KeyError:
|
||||
pass
|
||||
return ConfigParser.ConfigParser.get(
|
||||
self, section, option, True, variables)
|
||||
except ConfigParser.InterpolationError:
|
||||
return ConfigParser.ConfigParser.get(
|
||||
self, section, option, True, variables)
|
||||
except (ConfigParser.NoSectionError, ConfigParser.NoOptionError) as e:
|
||||
return configparser.ConfigParser.get(
|
||||
self, section, option, raw=True, vars=variables)
|
||||
except configparser.InterpolationError:
|
||||
return configparser.ConfigParser.get(
|
||||
self, section, option, raw=True, vars=variables)
|
||||
except (configparser.NoSectionError, configparser.NoOptionError) as e:
|
||||
try:
|
||||
return BMConfigDefaults[section][option]
|
||||
except (KeyError, ValueError, AttributeError):
|
||||
|
@ -84,49 +84,56 @@ class BMConfigParser(ConfigParser.SafeConfigParser):
|
|||
self._temp[section] = {option: value}
|
||||
|
||||
def safeGetBoolean(self, section, field):
|
||||
config = configparser.ConfigParser()
|
||||
try:
|
||||
return self.getboolean(section, field)
|
||||
except (ConfigParser.NoSectionError, ConfigParser.NoOptionError,
|
||||
#Used in the python2.7
|
||||
# return self.getboolean(section, field)
|
||||
#Used in the python3.5.2
|
||||
return config.getboolean(section, field)
|
||||
except (configparser.NoSectionError, configparser.NoOptionError,
|
||||
ValueError, AttributeError):
|
||||
return False
|
||||
|
||||
def safeGetInt(self, section, field, default=0):
|
||||
config = configparser.ConfigParser()
|
||||
try:
|
||||
return self.getint(section, field)
|
||||
except (ConfigParser.NoSectionError, ConfigParser.NoOptionError,
|
||||
#Used in the python2.7
|
||||
# return self.getint(section, field)
|
||||
#Used in the python3.5.2
|
||||
return config.getint(section, field)
|
||||
except (configparser.NoSectionError, configparser.NoOptionError,
|
||||
ValueError, AttributeError):
|
||||
return default
|
||||
|
||||
def safeGet(self, section, option, default=None):
|
||||
try:
|
||||
return self.get(section, option)
|
||||
except (ConfigParser.NoSectionError, ConfigParser.NoOptionError,
|
||||
except (configparser.NoSectionError, configparser.NoOptionError,
|
||||
ValueError, AttributeError):
|
||||
return default
|
||||
|
||||
def items(self, section, raw=False, variables=None):
|
||||
return ConfigParser.ConfigParser.items(self, section, True, variables)
|
||||
return configparser.ConfigParser.items(self, section, True, variables)
|
||||
|
||||
def addresses(self):
|
||||
return filter(
|
||||
lambda x: x.startswith('BM-'), BMConfigParser().sections())
|
||||
return [x for x in BMConfigParser().sections() if x.startswith('BM-')]
|
||||
|
||||
def read(self, filenames):
|
||||
ConfigParser.ConfigParser.read(self, filenames)
|
||||
configparser.ConfigParser.read(self, filenames)
|
||||
for section in self.sections():
|
||||
for option in self.options(section):
|
||||
try:
|
||||
if not self.validate(
|
||||
section, option,
|
||||
ConfigParser.ConfigParser.get(self, section, option)
|
||||
configparser.ConfigParser.get(self, section, option)
|
||||
):
|
||||
try:
|
||||
newVal = BMConfigDefaults[section][option]
|
||||
except KeyError:
|
||||
continue
|
||||
ConfigParser.ConfigParser.set(
|
||||
configparser.ConfigParser.set(
|
||||
self, section, option, newVal)
|
||||
except ConfigParser.InterpolationError:
|
||||
except configparser.InterpolationError:
|
||||
continue
|
||||
|
||||
def save(self):
|
||||
|
@ -144,7 +151,7 @@ class BMConfigParser(ConfigParser.SafeConfigParser):
|
|||
# didn't exist before.
|
||||
fileNameExisted = False
|
||||
# write the file
|
||||
with open(fileName, 'wb') as configfile:
|
||||
with open(fileName, 'w') as configfile:
|
||||
self.write(configfile)
|
||||
# delete the backup
|
||||
if fileNameExisted:
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import Queue
|
||||
import queue as Queue
|
||||
import threading
|
||||
import time
|
||||
|
||||
|
|
|
@ -51,8 +51,8 @@ class sqlThread(threading.Thread):
|
|||
'''INSERT INTO subscriptions VALUES('Bitmessage new releases/announcements','BM-GtovgYdgs7qXPkoYaRgrLFuFKz1SFpsw',1)''')
|
||||
self.cur.execute(
|
||||
'''CREATE TABLE settings (key blob, value blob, UNIQUE(key) ON CONFLICT REPLACE)''' )
|
||||
self.cur.execute( '''INSERT INTO settings VALUES('version','10')''')
|
||||
self.cur.execute( '''INSERT INTO settings VALUES('lastvacuumtime',?)''', (
|
||||
self.cur.execute('''INSERT INTO settings VALUES('version','10')''')
|
||||
self.cur.execute('''INSERT INTO settings VALUES('lastvacuumtime',?)''', (
|
||||
int(time.time()),))
|
||||
self.cur.execute(
|
||||
'''CREATE TABLE objectprocessorqueue (objecttype int, data blob, UNIQUE(objecttype, data) ON CONFLICT REPLACE)''' )
|
||||
|
@ -70,9 +70,11 @@ class sqlThread(threading.Thread):
|
|||
# If the settings version is equal to 2 or 3 then the
|
||||
# sqlThread will modify the pubkeys table and change
|
||||
# the settings version to 4.
|
||||
settingsversion = BMConfigParser().getint(
|
||||
'bitmessagesettings', 'settingsversion')
|
||||
|
||||
# settingsversion = BMConfigParser().getint('bitmessagesettings', 'settingsversion')
|
||||
# In the Python3 I am below condition converting into int
|
||||
# settingsversion = int(BMConfigParser().get('bitmessagesettings', 'settingsversion') \
|
||||
# if BMConfigParser().get('bitmessagesettings', 'settingsversion') else 0)
|
||||
settingsversion = BMConfigParser().safeGetInt('bitmessagesettings', 'settingsvesion')
|
||||
# People running earlier versions of PyBitmessage do not have the
|
||||
# usedpersonally field in their pubkeys table. Let's add it.
|
||||
if settingsversion == 2:
|
||||
|
|
|
@ -23,7 +23,7 @@ Use: `from debug import logger` to import this facility into whatever module you
|
|||
|
||||
"""
|
||||
|
||||
import ConfigParser
|
||||
import configparser
|
||||
import logging
|
||||
import logging.config
|
||||
import os
|
||||
|
@ -47,12 +47,13 @@ def configureLogging():
|
|||
fail_msg = ''
|
||||
try:
|
||||
logging_config = os.path.join(state.appdata, 'logging.dat')
|
||||
logging.config.fileConfig(logging_config)
|
||||
# right now I am commenting the logger
|
||||
# logging.config.fileConfig(logging_config, disable_existing_loggers=False)
|
||||
return (
|
||||
False,
|
||||
'Loaded logger configuration from %s' % logging_config
|
||||
)
|
||||
except (OSError, ConfigParser.NoSectionError):
|
||||
except (OSError, configparser.NoSectionError):
|
||||
if os.path.isfile(logging_config):
|
||||
fail_msg = \
|
||||
'Failed to load logger configuration from %s, using default' \
|
||||
|
|
|
@ -419,11 +419,11 @@ def check_dependencies(verbose=False, optional=False):
|
|||
'PyBitmessage requires Python 2.7.4 or greater'
|
||||
' (but not Python 3+)')
|
||||
has_all_dependencies = False
|
||||
if sys.hexversion >= 0x3000000:
|
||||
logger.error(
|
||||
'PyBitmessage does not support Python 3+. Python 2.7.4'
|
||||
' or greater is required.')
|
||||
has_all_dependencies = False
|
||||
# if sys.hexversion >= 0x3000000:
|
||||
# logger.error(
|
||||
# 'PyBitmessage does not support Python 3+. Python 2.7.4'
|
||||
# ' or greater is required.')
|
||||
# has_all_dependencies = False
|
||||
|
||||
check_functions = [check_ripemd160, check_sqlite, check_openssl]
|
||||
if optional:
|
||||
|
|
|
@ -4,7 +4,8 @@ from pyelliptic import arithmetic
|
|||
# This function expects that pubkey begin with \x04
|
||||
def calculateBitcoinAddressFromPubkey(pubkey):
|
||||
if len(pubkey) != 65:
|
||||
print 'Could not calculate Bitcoin address from pubkey because function was passed a pubkey that was', len(pubkey), 'bytes long rather than 65.'
|
||||
print ('Could not calculate Bitcoin address from pubkey because function was passed a pubkey that was'\
|
||||
'{}, bytes long rather than 65.'.format(len(pubkey)))
|
||||
return "error"
|
||||
ripe = hashlib.new('ripemd160')
|
||||
sha = hashlib.new('sha256')
|
||||
|
@ -25,7 +26,8 @@ def calculateBitcoinAddressFromPubkey(pubkey):
|
|||
|
||||
def calculateTestnetAddressFromPubkey(pubkey):
|
||||
if len(pubkey) != 65:
|
||||
print 'Could not calculate Bitcoin address from pubkey because function was passed a pubkey that was', len(pubkey), 'bytes long rather than 65.'
|
||||
print ('Could not calculate Bitcoin address from pubkey because function was passed a pubkey that was',\
|
||||
'{}, bytes long rather than 65.'.format(pubkey))
|
||||
return "error"
|
||||
ripe = hashlib.new('ripemd160')
|
||||
sha = hashlib.new('sha256')
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
"""Helper Sql performs sql operations."""
|
||||
|
||||
import threading
|
||||
import Queue
|
||||
import queue as Queue
|
||||
|
||||
sqlSubmitQueue = Queue.Queue()
|
||||
# SQLITE3 is so thread-unsafe that they won't even let you call it from different threads using your own locks.
|
||||
|
|
|
@ -7,7 +7,7 @@ Helper Start performs all the startup operations.
|
|||
# pylint: disable=too-many-branches,too-many-statements
|
||||
from __future__ import print_function
|
||||
|
||||
import ConfigParser
|
||||
import configparser
|
||||
import os
|
||||
import platform
|
||||
import sys
|
||||
|
@ -27,7 +27,7 @@ StoreConfigFilesInSameDirectoryAsProgramByDefault = False
|
|||
def _loadTrustedPeer():
|
||||
try:
|
||||
trustedPeer = BMConfigParser().get('bitmessagesettings', 'trustedpeer')
|
||||
except ConfigParser.Error:
|
||||
except configparser.Error:
|
||||
# This probably means the trusted peer wasn't specified so we
|
||||
# can just leave it as None
|
||||
return
|
||||
|
@ -137,11 +137,12 @@ def loadConfig():
|
|||
|
||||
_loadTrustedPeer()
|
||||
|
||||
|
||||
def updateConfig():
|
||||
"""Save the config"""
|
||||
config = BMConfigParser()
|
||||
settingsversion = config.getint('bitmessagesettings', 'settingsversion')
|
||||
# Used python2.7
|
||||
# settingsversion = int(BMConfigParser().get('bitmessagesettings', 'settingsversion') \
|
||||
settingsversion = BMConfigParser().safeGetInt('bitmessagesettings', 'settingsvesion')
|
||||
if settingsversion == 1:
|
||||
config.set('bitmessagesettings', 'socksproxytype', 'none')
|
||||
config.set('bitmessagesettings', 'sockshostname', 'localhost')
|
||||
|
|
|
@ -13,10 +13,11 @@ from pyelliptic import arithmetic as a
|
|||
|
||||
def makeCryptor(privkey):
|
||||
"""Return a private pyelliptic.ECC() instance"""
|
||||
# import pdb;pdb.set_trace()
|
||||
private_key = a.changebase(privkey, 16, 256, minlen=32)
|
||||
public_key = pointMult(private_key)
|
||||
privkey_bin = '\x02\xca\x00\x20' + private_key
|
||||
pubkey_bin = '\x02\xca\x00\x20' + public_key[1:-32] + '\x00\x20' + public_key[-32:]
|
||||
pubkey_bin = '\x02\xca\x00\x20' + public_key[1:-32].decode() + '\x00\x20' + public_key[-32:].decode()
|
||||
cryptor = pyelliptic.ECC(curve='secp256k1', privkey=privkey_bin, pubkey=pubkey_bin)
|
||||
return cryptor
|
||||
|
||||
|
|
|
@ -40,12 +40,13 @@ def json_serialize_knownnodes(output):
|
|||
Reorganize knownnodes dict and write it as JSON to output
|
||||
"""
|
||||
_serialized = []
|
||||
for stream, peers in knownNodes.iteritems():
|
||||
for peer, info in peers.iteritems():
|
||||
for stream, peers in iter(knownNodes.items()):
|
||||
for peer, info in iter(peers.items()):
|
||||
info.update(rating=round(info.get('rating', 0), 2))
|
||||
_serialized.append({
|
||||
'stream': stream, 'peer': peer._asdict(), 'info': info
|
||||
})
|
||||
# import pdb;pdb.set_trace()
|
||||
json.dump(_serialized, output, indent=4)
|
||||
|
||||
|
||||
|
@ -85,7 +86,7 @@ def saveKnownNodes(dirName=None):
|
|||
if dirName is None:
|
||||
dirName = state.appdata
|
||||
with knownNodesLock:
|
||||
with open(os.path.join(dirName, 'knownnodes.dat'), 'wb') as output:
|
||||
with open(os.path.join(dirName, 'knownnodes.dat'), 'w') as output:
|
||||
json_serialize_knownnodes(output)
|
||||
|
||||
|
||||
|
|
24
src/l10n.py
24
src/l10n.py
|
@ -64,20 +64,30 @@ else:
|
|||
if time_format != DEFAULT_TIME_FORMAT:
|
||||
try:
|
||||
#Check day names
|
||||
for i in xrange(7):
|
||||
unicode(time.strftime(time_format, (0, 0, 0, 0, 0, 0, i, 0, 0)), encoding)
|
||||
new_time_format = time_format
|
||||
import sys
|
||||
if sys.version_info >= (3, 0, 0) and time_format == '%%c':
|
||||
time_format = '%c'
|
||||
for i in range(7):
|
||||
#this work for python2.7
|
||||
# unicode(time.strftime(time_format, (0, 0, 0, 0, 0, 0, i, 0, 0)), encoding)
|
||||
#this code for the python3
|
||||
(time.strftime(time_format, (0, 0, 0, 0, 0, 0, i, 0, 0))).encode()
|
||||
#Check month names
|
||||
for i in xrange(1, 13):
|
||||
unicode(time.strftime(time_format, (0, i, 0, 0, 0, 0, 0, 0, 0)), encoding)
|
||||
for i in range(1, 13):
|
||||
# unicode(time.strftime(time_format, (0, i, 0, 0, 0, 0, 0, 0, 0)), encoding)
|
||||
(time.strftime(time_format, (0, i, 0, 0, 0, 0, 0, 0, 0))).encode()
|
||||
|
||||
#Check AM/PM
|
||||
unicode(time.strftime(time_format, (0, 0, 0, 11, 0, 0, 0, 0, 0)), encoding)
|
||||
unicode(time.strftime(time_format, (0, 0, 0, 13, 0, 0, 0, 0, 0)), encoding)
|
||||
(time.strftime(time_format, (0, 0, 0, 11, 0, 0, 0, 0, 0))).encode()
|
||||
(time.strftime(time_format, (0, 0, 0, 13, 0, 0, 0, 0, 0))).encode()
|
||||
#Check DST
|
||||
unicode(time.strftime(time_format, (0, 0, 0, 0, 0, 0, 0, 0, 1)), encoding)
|
||||
(time.strftime(time_format, (0, 0, 0, 0, 0, 0, 0, 0, 1))).encode()
|
||||
except:
|
||||
logger.exception('Could not decode locale formatted timestamp')
|
||||
time_format = DEFAULT_TIME_FORMAT
|
||||
encoding = DEFAULT_ENCODING
|
||||
time_format = new_time_format
|
||||
|
||||
def setlocale(category, newlocale):
|
||||
locale.setlocale(category, newlocale)
|
||||
|
|
|
@ -4,7 +4,7 @@ src/messagetypes/__init__.py
|
|||
"""
|
||||
from importlib import import_module
|
||||
from os import path, listdir
|
||||
from string import lower
|
||||
|
||||
try:
|
||||
from kivy.utils import platform
|
||||
except:
|
||||
|
|
|
@ -3,7 +3,7 @@ src/multiqueue.py
|
|||
=================
|
||||
"""
|
||||
|
||||
import Queue
|
||||
import queue as Queue
|
||||
from collections import deque
|
||||
|
||||
import helper_random
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import Queue
|
||||
import queue as Queue
|
||||
|
||||
from helper_threading import StoppableThread
|
||||
from network.connectionpool import BMConnectionPool
|
||||
|
|
|
@ -30,7 +30,10 @@ class AdvancedDispatcher(asyncore.dispatcher):
|
|||
_buf_len = 131072 # 128kB
|
||||
|
||||
def __init__(self, sock=None):
|
||||
if not hasattr(self, '_map'):
|
||||
# python 2 below condition is used
|
||||
# if not hasattr(self, '_map'):
|
||||
# python 3 below condition is used
|
||||
if not '_map' in dir(self):
|
||||
asyncore.dispatcher.__init__(self, sock)
|
||||
self.read_buf = bytearray()
|
||||
self.write_buf = bytearray()
|
||||
|
|
|
@ -767,10 +767,11 @@ class dispatcher:
|
|||
# references to the underlying socket object.
|
||||
def __getattr__(self, attr):
|
||||
try:
|
||||
# import pdb;pdb.set_trace()
|
||||
retattr = getattr(self.socket, attr)
|
||||
except AttributeError:
|
||||
raise AttributeError("%s instance has no attribute '%s'"
|
||||
% (self.__class__.__name__, attr))
|
||||
raise AttributeError("{} instance has no attribute {}"
|
||||
.format(self.__class__.__name__, attr))
|
||||
else:
|
||||
msg = "%(me)s.%(attr)s is deprecated; use %(me)s.socket.%(attr)s " \
|
||||
"instead" % {'me': self.__class__.__name__, 'attr': attr}
|
||||
|
@ -788,7 +789,7 @@ class dispatcher:
|
|||
def log_info(self, message, log_type='info'):
|
||||
"""Conditionally print a message"""
|
||||
if log_type not in self.ignore_log_types:
|
||||
print '%s: %s' % (log_type, message)
|
||||
print ('{}: {}'.format((log_type, message)))
|
||||
|
||||
def handle_read_event(self):
|
||||
"""Handle a read event"""
|
||||
|
|
|
@ -11,7 +11,7 @@ import time
|
|||
from binascii import hexlify
|
||||
|
||||
import addresses
|
||||
import connectionpool
|
||||
import network.connectionpool
|
||||
import knownnodes
|
||||
import protocol
|
||||
import state
|
||||
|
@ -26,9 +26,9 @@ from network.bmobject import (
|
|||
BMObjectInvalidError, BMObjectAlreadyHaveError)
|
||||
from network.node import Node
|
||||
from network.proxy import ProxyError
|
||||
from objectracker import missingObjects, ObjectTracker
|
||||
from network.objectracker import missingObjects, ObjectTracker
|
||||
from queues import objectProcessorQueue, portCheckerQueue, invQueue, addrQueue
|
||||
from randomtrackingdict import RandomTrackingDict
|
||||
from network.randomtrackingdict import RandomTrackingDict
|
||||
|
||||
|
||||
class BMProtoError(ProxyError):
|
||||
|
|
|
@ -7,20 +7,19 @@ import re
|
|||
import socket
|
||||
import time
|
||||
|
||||
import asyncore_pollchoose as asyncore
|
||||
import network.asyncore_pollchoose as asyncore
|
||||
import helper_random
|
||||
import knownnodes
|
||||
import protocol
|
||||
import state
|
||||
from bmconfigparser import BMConfigParser
|
||||
from connectionchooser import chooseConnection
|
||||
from network.connectionchooser import chooseConnection
|
||||
from debug import logger
|
||||
from proxy import Proxy
|
||||
from network.proxy import Proxy
|
||||
from singleton import Singleton
|
||||
from tcp import (
|
||||
bootstrap, Socks4aBMConnection, Socks5BMConnection,
|
||||
TCPConnection, TCPServer)
|
||||
from udp import UDPSocket
|
||||
from network.tcp import (
|
||||
TCPServer, Socks5BMConnection, Socks4aBMConnection, TCPConnection)
|
||||
from network.udp import UDPSocket
|
||||
|
||||
|
||||
@Singleton
|
||||
|
|
|
@ -7,7 +7,7 @@ from random import choice, sample, expovariate
|
|||
from threading import RLock
|
||||
from time import time
|
||||
|
||||
import connectionpool
|
||||
import network.connectionpool
|
||||
import state
|
||||
from debug import logging
|
||||
from queues import invQueue
|
||||
|
|
|
@ -7,12 +7,12 @@ import time
|
|||
import addresses
|
||||
import helper_random
|
||||
import protocol
|
||||
from dandelion import Dandelion
|
||||
from network.dandelion import Dandelion
|
||||
from debug import logger
|
||||
from helper_threading import StoppableThread
|
||||
from inventory import Inventory
|
||||
from network.connectionpool import BMConnectionPool
|
||||
from objectracker import missingObjects
|
||||
from network.objectracker import missingObjects
|
||||
|
||||
|
||||
class DownloadThread(StoppableThread):
|
||||
|
|
|
@ -2,7 +2,7 @@ import socket
|
|||
|
||||
from advanceddispatcher import AdvancedDispatcher
|
||||
import asyncore_pollchoose as asyncore
|
||||
from proxy import ProxyError
|
||||
from network.proxy import ProxyError
|
||||
from socks5 import Socks5Connection, Socks5Resolver
|
||||
from socks4a import Socks4aConnection, Socks4aResolver
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
src/network/invthread.py
|
||||
========================
|
||||
"""
|
||||
import Queue
|
||||
import queue as Queue
|
||||
import random
|
||||
from time import time
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ from threading import RLock
|
|||
|
||||
import network.connectionpool
|
||||
from network.dandelion import Dandelion
|
||||
from randomtrackingdict import RandomTrackingDict
|
||||
from network.randomtrackingdict import RandomTrackingDict
|
||||
|
||||
haveBloom = False
|
||||
|
||||
|
|
|
@ -6,9 +6,9 @@ src/network/proxy.py
|
|||
import socket
|
||||
import time
|
||||
|
||||
import asyncore_pollchoose as asyncore
|
||||
import network.asyncore_pollchoose as asyncore
|
||||
import state
|
||||
from advanceddispatcher import AdvancedDispatcher
|
||||
from network.advanceddispatcher import AdvancedDispatcher
|
||||
from bmconfigparser import BMConfigParser
|
||||
from debug import logger
|
||||
|
||||
|
|
|
@ -140,20 +140,20 @@ if __name__ == '__main__':
|
|||
k = RandomTrackingDict()
|
||||
d = {}
|
||||
|
||||
print "populating random tracking dict"
|
||||
print ("populating random tracking dict")
|
||||
a.append(time())
|
||||
for i in range(50000):
|
||||
k[randString()] = True
|
||||
a.append(time())
|
||||
print "done"
|
||||
print ("done")
|
||||
|
||||
while k:
|
||||
retval = k.randomKeys(1000)
|
||||
if not retval:
|
||||
print "error getting random keys"
|
||||
print ("error getting random keys")
|
||||
try:
|
||||
k.randomKeys(100)
|
||||
print "bad"
|
||||
print( "bad")
|
||||
except KeyError:
|
||||
pass
|
||||
for i in retval:
|
||||
|
@ -161,4 +161,4 @@ if __name__ == '__main__':
|
|||
a.append(time())
|
||||
|
||||
for x in range(len(a) - 1):
|
||||
print "%i: %.3f" % (x, a[x + 1] - a[x])
|
||||
print("{}i: {}.3f".format(x, a[x + 1] - a[x]))
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import errno
|
||||
import Queue
|
||||
import queue as Queue
|
||||
import socket
|
||||
|
||||
from debug import logger
|
||||
|
|
|
@ -6,7 +6,7 @@ src/network/socks4a.py
|
|||
import socket
|
||||
import struct
|
||||
|
||||
from proxy import Proxy, ProxyError, GeneralProxyError
|
||||
from network.proxy import Proxy, ProxyError, GeneralProxyError
|
||||
|
||||
|
||||
class Socks4aError(ProxyError):
|
||||
|
@ -141,4 +141,4 @@ class Socks4aResolver(Socks4a):
|
|||
PyBitmessage, a callback needs to be implemented which hasn't
|
||||
been done yet.
|
||||
"""
|
||||
print "Resolved %s as %s" % (self.host, self.proxy_sock_name())
|
||||
print("Resolved {} as {}".format(self.host, self.proxy_sock_name()))
|
||||
|
|
|
@ -9,7 +9,7 @@ import socket
|
|||
import struct
|
||||
|
||||
import state
|
||||
from proxy import GeneralProxyError, Proxy, ProxyError
|
||||
from network.proxy import GeneralProxyError, Proxy, ProxyError
|
||||
|
||||
|
||||
class Socks5AuthError(ProxyError):
|
||||
|
@ -218,4 +218,4 @@ class Socks5Resolver(Socks5):
|
|||
To use this within PyBitmessage, a callback needs to be
|
||||
implemented which hasn't been done yet.
|
||||
"""
|
||||
print "Resolved %s as %s" % (self.host, self.proxy_sock_name())
|
||||
print("Resolved {} as {}".format(self.host, self.proxy_sock_name()))
|
||||
|
|
|
@ -6,7 +6,7 @@ import time
|
|||
|
||||
import asyncore_pollchoose as asyncore
|
||||
from network.connectionpool import BMConnectionPool
|
||||
from objectracker import missingObjects
|
||||
from network.objectracker import missingObjects
|
||||
|
||||
|
||||
lastReceivedTimestamp = time.time()
|
||||
|
|
|
@ -10,8 +10,8 @@ import socket
|
|||
import time
|
||||
|
||||
import addresses
|
||||
import asyncore_pollchoose as asyncore
|
||||
import connectionpool
|
||||
import network.asyncore_pollchoose as asyncore
|
||||
import network.connectionpool
|
||||
import helper_random
|
||||
import knownnodes
|
||||
import protocol
|
||||
|
|
|
@ -21,7 +21,12 @@ if sys.version_info >= (2, 7, 13):
|
|||
# this means TLSv1 or higher
|
||||
# in the future change to
|
||||
# ssl.PROTOCOL_TLS1.2
|
||||
# Right now I am using the python3.5.2 and I faced the ssl for protocol due to this I
|
||||
# have used try and catch
|
||||
try:
|
||||
sslProtocolVersion = ssl.PROTOCOL_TLS # pylint: disable=no-member
|
||||
except AttributeError:
|
||||
sslProtocolVersion = ssl.PROTOCOL_SSLv23
|
||||
elif sys.version_info >= (2, 7, 9):
|
||||
# this means any SSL/TLS. SSLv2 and 3 are excluded with an option after context is created
|
||||
sslProtocolVersion = ssl.PROTOCOL_SSLv23
|
||||
|
|
|
@ -7,9 +7,9 @@ import socket
|
|||
|
||||
import state
|
||||
import protocol
|
||||
from bmproto import BMProto
|
||||
from network.bmproto import BMProto
|
||||
from debug import logger
|
||||
from objectracker import ObjectTracker
|
||||
from network.objectracker import ObjectTracker
|
||||
from queues import receiveDataQueue
|
||||
|
||||
|
||||
|
|
|
@ -11,7 +11,7 @@ from helper_threading import StoppableThread
|
|||
from inventory import Inventory
|
||||
from network.connectionpool import BMConnectionPool
|
||||
from network.dandelion import Dandelion
|
||||
from randomtrackingdict import RandomTrackingDict
|
||||
from network.randomtrackingdict import RandomTrackingDict
|
||||
|
||||
|
||||
class UploadThread(StoppableThread):
|
||||
|
|
|
@ -107,9 +107,10 @@ def do_opencl_pow(hash, target):
|
|||
#initCL()
|
||||
|
||||
if __name__ == "__main__":
|
||||
target = 54227212183L
|
||||
#in python3 I have change this 54227212183L to 54227212183
|
||||
target = 54227212183
|
||||
initialHash = "3758f55b5a8d902fd3597e4ce6a2d3f23daff735f65d9698c270987f4e67ad590b93f3ffeba0ef2fd08a8dc2f87b68ae5a0dc819ab57f22ad2c4c9c8618a43b3".decode("hex")
|
||||
nonce = do_opencl_pow(initialHash.encode("hex"), target)
|
||||
trialValue, = unpack('>Q',hashlib.sha512(hashlib.sha512(pack('>Q',nonce) + initialHash).digest()).digest()[0:8])
|
||||
print "{} - value {} < {}".format(nonce, trialValue, target)
|
||||
print ("{} - value {} < {}".format(nonce, trialValue, target))
|
||||
|
||||
|
|
|
@ -39,7 +39,7 @@ def encode(val, base, minlen=0):
|
|||
code_string = get_code_string(base)
|
||||
result = ""
|
||||
while val > 0:
|
||||
result = code_string[val % base] + result
|
||||
result = code_string[round(val % base)] + result
|
||||
val /= base
|
||||
if len(result) < minlen:
|
||||
result = code_string[0] * (minlen - len(result)) + result
|
||||
|
@ -53,7 +53,7 @@ def decode(string, base):
|
|||
string = string.lower()
|
||||
while string:
|
||||
result *= base
|
||||
result += code_string.find(string[0])
|
||||
result += code_string.find(string.decode()[0])
|
||||
string = string[1:]
|
||||
return result
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ src/pyelliptic/cipher.py
|
|||
# Copyright (C) 2011 Yann GUIBET <yannguibet@gmail.com>
|
||||
# See LICENSE for details.
|
||||
|
||||
from openssl import OpenSSL
|
||||
from .openssl import OpenSSL
|
||||
|
||||
|
||||
# pylint: disable=redefined-builtin
|
||||
|
|
|
@ -12,9 +12,9 @@ src/pyelliptic/ecc.py
|
|||
from hashlib import sha512
|
||||
from struct import pack, unpack
|
||||
|
||||
from cipher import Cipher
|
||||
from hash import equals, hmac_sha256
|
||||
from openssl import OpenSSL
|
||||
from pyelliptic.cipher import Cipher
|
||||
from pyelliptic.hash import equals, hmac_sha256
|
||||
from pyelliptic.openssl import OpenSSL
|
||||
|
||||
|
||||
class ECC(object):
|
||||
|
@ -129,7 +129,8 @@ class ECC(object):
|
|||
))
|
||||
|
||||
@staticmethod
|
||||
def _decode_pubkey(pubkey):
|
||||
def _decode_pubkey( pubkey):
|
||||
pubkey = pubkey.encode()
|
||||
i = 0
|
||||
curve = unpack('!H', pubkey[i:i + 2])[0]
|
||||
i += 2
|
||||
|
|
|
@ -7,7 +7,7 @@ src/pyelliptic/hash.py
|
|||
# Copyright (C) 2011 Yann GUIBET <yannguibet@gmail.com>
|
||||
# See LICENSE for details.
|
||||
|
||||
from openssl import OpenSSL
|
||||
from .openssl import OpenSSL
|
||||
|
||||
|
||||
# For python3
|
||||
|
|
|
@ -90,7 +90,7 @@ class _OpenSSL:
|
|||
"""Build the wrapper"""
|
||||
self._lib = ctypes.CDLL(library)
|
||||
self._version, self._hexversion, self._cflags = get_version(self._lib)
|
||||
self._libreSSL = self._version.startswith("LibreSSL")
|
||||
self._libreSSL = (self._version).decode("utf-8").startswith("OpenSSL")
|
||||
|
||||
self.pointer = ctypes.pointer
|
||||
self.c_int = ctypes.c_int
|
||||
|
@ -674,6 +674,7 @@ def loadOpenSSL():
|
|||
elif 'win32' in sys.platform or 'win64' in sys.platform:
|
||||
libdir.append(path.join(sys._MEIPASS, 'libeay32.dll'))
|
||||
else:
|
||||
|
||||
libdir.extend([
|
||||
path.join(sys._MEIPASS, 'libcrypto.so'),
|
||||
path.join(sys._MEIPASS, 'libssl.so'),
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
import Queue
|
||||
import queue as Queue
|
||||
|
||||
from class_objectProcessorQueue import ObjectProcessorQueue
|
||||
from multiqueue import MultiQueue
|
||||
|
|
|
@ -174,12 +174,11 @@ def reloadBroadcastSendersForWhichImWatching():
|
|||
# Now, for all addresses, even version 2 addresses,
|
||||
# we should create Cryptor objects in a dictionary which we will
|
||||
# use to attempt to decrypt encrypted broadcast messages.
|
||||
|
||||
# import pdb;pdb.set_trace()
|
||||
if addressVersionNumber <= 3:
|
||||
privEncryptionKey = hashlib.sha512(
|
||||
encodeVarint(addressVersionNumber) +
|
||||
encodeVarint(streamNumber) + hash
|
||||
).digest()[:32]
|
||||
privEncryptionKey = hashlib.sha512((encodeVarint(addressVersionNumber) \
|
||||
+ encodeVarint(streamNumber) + hash)).digest()[:32]
|
||||
# import pdb;pdb.set_trace()
|
||||
MyECSubscriptionCryptorObjects[hash] = \
|
||||
highlevelcrypto.makeCryptor(hexlify(privEncryptionKey))
|
||||
else:
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import os
|
||||
import Queue
|
||||
import queue as Queue
|
||||
import threading
|
||||
import time
|
||||
|
||||
|
|
|
@ -75,7 +75,7 @@ class singleinstance:
|
|||
fcntl.lockf(self.fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
|
||||
self.lockPid = os.getpid()
|
||||
except IOError:
|
||||
print 'Another instance of this application is already running'
|
||||
print ('Another instance of this application is already running')
|
||||
sys.exit(-1)
|
||||
else:
|
||||
pidLine = "%i\n" % self.lockPid
|
||||
|
@ -94,11 +94,11 @@ class singleinstance:
|
|||
os.close(self.fd)
|
||||
else:
|
||||
fcntl.lockf(self.fp, fcntl.LOCK_UN)
|
||||
except Exception, e:
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
return
|
||||
print "Cleaning up lockfile"
|
||||
print ("Cleaning up lockfile")
|
||||
try:
|
||||
if sys.platform == 'win32':
|
||||
if hasattr(self, 'fd'):
|
||||
|
|
|
@ -9,7 +9,7 @@ from threading import RLock
|
|||
import time
|
||||
|
||||
from paths import lookupAppdataFolder
|
||||
from storage import InventoryStorage, InventoryItem
|
||||
from storage.storage import InventoryStorage, InventoryItem
|
||||
|
||||
|
||||
class FilesystemInventory(InventoryStorage): # pylint: disable=too-many-ancestors, abstract-method
|
||||
|
@ -144,7 +144,7 @@ class FilesystemInventory(InventoryStorage): # pylint: disable=too-many-ances
|
|||
newInventory[streamNumber][hashId] = InventoryItem(
|
||||
objectType, streamNumber, None, expiresTime, tag)
|
||||
except KeyError:
|
||||
print "error loading %s" % (hexlify(hashId))
|
||||
print ("error loading {}".format((hexlify(hashId))))
|
||||
self._inventory = newInventory
|
||||
# for i, v in self._inventory.items():
|
||||
# print "loaded stream: %s, %i items" % (i, len(v))
|
||||
|
|
|
@ -6,6 +6,7 @@ import sqlite3
|
|||
import time
|
||||
from threading import RLock
|
||||
|
||||
|
||||
from helper_sql import sqlQuery, SqlBulkExecute, sqlExecute
|
||||
from storage import InventoryStorage, InventoryItem
|
||||
|
||||
|
|
|
@ -1,32 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
# Import the libraries.
|
||||
import pdb;pdb.set_trace()
|
||||
import pydenticon100000000000000000000000
|
||||
import hashlib
|
||||
# Set-up some test data.
|
||||
users = ["alice", "bob", "eve", "dave"]
|
||||
# Set-up a list of foreground colours (taken from Sigil).
|
||||
foreground = ["rgb(45,79,255)",
|
||||
"rgb(254,180,44)",
|
||||
"rgb(226,121,234)",
|
||||
"rgb(30,179,253)",
|
||||
"rgb(232,77,65)",
|
||||
"rgb(49,203,115)",
|
||||
"rgb(141,69,170)"]
|
||||
# Set-up a background colour (taken from Sigil).
|
||||
background = "rgb(224,224,224)"
|
||||
# Set-up the padding (top, bottom, left, right) in pixels.
|
||||
padding = (20, 20, 20, 20)
|
||||
# Instantiate a generator that will create 5x5 block identicons using SHA1
|
||||
# digest.
|
||||
generator = pydenticon.Generator(5, 5, digest=hashlib.sha1, foreground=foreground, background=background)
|
||||
|
||||
# identicon_ascii = generator.generate("john.doe@example.com", 200, 200,
|
||||
# output_format="ascii")
|
||||
|
||||
# print identicon_ascii
|
||||
for user in users:
|
||||
identicon = generator.generate(user, 200, 200, padding=padding, output_format="png")
|
||||
filename = user + ".png"
|
||||
with open(filename, "wb") as f:
|
||||
f.write(identicon)
|
|
@ -5,7 +5,7 @@ Tests for core and those that do not work outside
|
|||
|
||||
import os
|
||||
import pickle # nosec
|
||||
import Queue
|
||||
import queue as Queue
|
||||
import random # nosec
|
||||
import string
|
||||
import time
|
||||
|
|
|
@ -46,11 +46,11 @@ def translateText(context, text, n=None):
|
|||
try:
|
||||
from PyQt4 import QtCore, QtGui
|
||||
except Exception as err:
|
||||
print 'PyBitmessage requires PyQt unless you want to run it as a daemon and interact with it using the API\
|
||||
print ('PyBitmessage requires PyQt unless you want to run it as a daemon and interact with it using the API\
|
||||
.You can download PyQt from http://www.riverbankcomputing.com/software/pyqt/download\
|
||||
or by searching Google for \'PyQt Download\'.\
|
||||
If you want to run in daemon mode, see https://bitmessage.org/wiki/Daemon'
|
||||
print 'Error message:', err
|
||||
If you want to run in daemon mode, see https://bitmessage.org/wiki/Daemon')
|
||||
print ('Error message:', err)
|
||||
os._exit(0) # pylint: disable=protected-access
|
||||
if n is None:
|
||||
return QtGui.QApplication.translate(context, text)
|
||||
|
|
Reference in New Issue
Block a user